编程之道去如黄鹤来如晨风

我从2016年9月入职深圳市大演绎科技有限公司,先后担任全栈开发工程师、CTO。由于各种原因公司停止运营,我也开始寻求新的发展。是时候该总结一下我在大演绎的这半年的编程经验了。


一、减少没有必要的代码

大演绎原来负责公司后台项目的程序员是运维出身,有十分严谨的编程作风。但问题也出在,他有时也太严谨了。比如他写了一个Python项目中用100多行的文件来判断加载配置文件遇到的各种情况,比如文件找不到、文件夹不存在……。这实在是没有很大必要,因为如果项目无法正确的加载配置文件,open()反方会自动抛出异常导致程序结束,写一堆个性化提示还不如看异常输出来的爽快。

没必要的代码虽说规范严谨,但浪费了大量的时间。

二、项目标准化与工程化

不论是MVC还是MVVC,最好都按照一定的市面上非常成熟方法编写,既不要用太旧的方法,也不要冒险用太新的方法。其中一个原因就是创业公司经常人员变动,如果你经常使用一些奇技淫巧,会给新来的程序员留下很多困惑。在入职由心之后,我发现前任程序员给我留下一些相当大的困惑。

公司有三个前端项目:网站(For PC)使用了PHP + Backbone + Vue(一点点) + 乱七八糟的一些其他库,网站(For Mobile)是一个Vue项目,而管理平台是一个完全的Backbone项目。

我是不太明白一个去年成立的公司的技术选型会选到Backbone,很明显2016年Backbone已经不是主流。网站(For PC)是十分混乱的,部分原因是经手这个项目的程序员都有自己的写法,引入自己框架,而使用PHP渲染导致了编译缓慢,而且可读性极差。

三、文档与注释(重要)

不要指望程序员都是神仙,没有文档注释或者没有易懂的文档注释的代码维护起来就是地狱!

由心的前任程序员给我留下了大量的晦涩的,过度封装的,没有注释的代码。当我维护这个项目的时候,我需要花费数倍于写代码的时间来看懂他写的代码。

一定要写文档与注释,不然接手你项目的程序员恨不得杀了你。(我也相信你两个月后也看不懂你两个月之前的代码)

四、不要不封装或过度封装

我当年不喜欢Java的原因之一就是Java代码容易写的非常庞大,写的过度封装。

没有经验的程序员会写很多不封装的代码,很多创业公司的程序员把SQL语句直接写在MVC框架的C曾,M层几乎不会用到。有些前端程序员会把Js代码在一个个的HTML文件复制很多遍。不过这种程序员开掉就好。

不过更大的隐患是过度封装。

过度封装的的行为有很多种,是一种说不上好还是不好的编程习惯。比如说一段代码只用到了一次,但却被封装成一个函数。这种复用率很低的代码在不影响阅读的情况下不应该被封装。封装他们增加了封装用的时间成本,增加了以后的维护的成本。

我接手的前端项目有一个组件只用了了一次,但是他分成了嵌套的四个组件,真的是令人抓狂。

五、谨慎造轮子(非常重要)

“封装”这个古老的编程特性最为重要的一点就是你大可不必重复的造轮子,完全可以使用前人的代码。现在编程已经比远古时期要幸运很多了,毕竟我们现在写网站一般不需要在考虑TCP/IP的问题了,对于Python来说我们只需要使用一个支持WSGI协议的网站应用框架就好了;Ajax跨域问题我们也只需要引入一个别人写好的装饰器就好了。

使用稳定现成的第三方代码可以吧减少我们在细枝末节上纠结的时间,而专心工作在具体的业务代码上。

曾经有程序员对我说,只会用第三方库的程序员水平很渣,对此观点我不敢苟同。使用稳定的第三方代码是摆脱细节泥淖的最佳方案,而自己造的轮子很难尽如人意。

除非有十分的必要,否则不要重复造轮子(自己玩可以,不要祸害公司)

总结

以上这些,主要应对的是创业公司所面对的几个问题:

  • 人员变动频繁
  • 人少
  • 人员质量参差不齐
  • 时间短、任务重