2020-10-13 部门编程基本功培训概要
关于基本功培训,我个人认为至少半数人的基本功不合格,或将将及格。对某些编程语言,对某些框架的api不熟悉。针对基本功提高,我有如下一些需必知必会的教程。主要分几个方面,java,javascript,ExtJs,Spring Framework,Spring boot。
javascript教程:《javascript高级程序设计》3,4,5章为基础,必须熟练掌握,6,7在写组件、框架的时候会有帮助,13章事件也重要,重点了解一下事件冒泡和事件捕获,其他章节了解即可。更重要的是理解执行javascript的线程是单线程的,单线程异步要理解,能力、精力有限的情况下,不一定非要有底层知识,能理解其行为就行。作用域链、原型链要理解,this指向要理解。
java:我觉得java这个语法几乎大家会大部分常用的,但是关于泛型、继承后的重写是我目前发现的不太好的地方,大多是抄的代码,不能暴露知识缺乏,并且需要写的代码逻辑也比较单一,也不能暴露知识缺乏。我的愿景是需要抄的代码越来越少,想搞业务的专注业务,想搞技术的能真的去写组件、写框架,减轻工作量,提高效率,人尽其才,术业有专攻。想做框架、组件的,必然要熟悉java反射的api。
Spring Framework,这个首先看官方的概要介绍,了解一个框架想要干什么。spring framework的核心是IOC和AOP,常用的是IOC,AOP不常用,是AOP的技术不常用,思想仍常用。Bean的构建行为过程必须掌握,不一定要深入底层代码。看代码是比较低效的,但一般低效的一些功夫,正是人与人之间差距大的地方,读源码还是量力而行,有需求再读为好。
做服务端,必须熟悉SpringMVC,想做组件、框架的,重点通一下DispatcherServlet的请求分发过程,重点掌握HandlerInterceptor的用法,理解HandlerMethod的概念。
做框架做工具,需熟悉spring boot的自动配置。我理解它的思想就是,大家都有一个习惯,我就按这个习惯来,如果你有特殊习惯,你自定义,可覆盖默认的习惯。这样配置、运行、部署极大简化,傻瓜化。
ExtJs:js是极为灵活的语言,比较底层,ExtJs的底层是一个非常类似于java包结构和类形式的一个类系统,相当于ExtJs先是构造了一个语言、语法。基于这套新语言、语法,构建组件模型,布局模型,事件。以”描述“来构建页面,而不是以逻辑运算来构建页面,这是更高一层的接口,我们用起来非常方便。目前我们用extjs的经验也比较多了,api比较熟悉,插件怎么写、组件怎么写,也有一些经验。要想写较为复杂的组件,前提是把js语言吃透,否则容易出bug。虽说都写过ExtJs,敢说能不抄代码写个字典页面的能有谁?
Flutter以及dart,dart在flutter环境下运行也是单线程的,和js非常类似,我个人本身并没有专门比较深入地学dart语言,因此只能以Flutter环境下的常用的dart写法为依据。作为前端语言,其中的概念与web前端基本一致,比如flex布局等,异步请求回调等,事件回调等,语法上必然也与前端语言有很多类似的地方。对于前端框架,和ExtJs一样,我只有造组件的时候才会参考框架源码,看它的一些功能是怎么实现的,平常开发不会去看源码,只是做到会用的程度。
关于CSS也非常重要,对于做前端的来讲非常重要,要做好前端,必须熟悉CSS,推荐《CSS世界》张鑫旭著。
关于代码格式、结构的书,《代码整洁之道》,有谁真正读过。关于方法层次的一些讨论,非常好,何尝只有方法有层次,更大的方面,项目模块,组件都要有层次。关于代码横向长度,纵向间距的,有谁又注意过,有的动辄开头一个空行,有的随意两个空行,有的在关联紧密的代码段中间给一个空行,有的在代码需要分隔的地方没有空行。变量命名冗长的地方也是屡见不鲜。等等问题应有尽有。