话说软件开发中的规范性

      这个话题要从最近工作中接触到的一些问题说起:大概情况是这样的,公司年前收购了一家公司(以下简称Y公司),虽然行业领域相同,但从业务模式到技术框架都是截然不同的。我们原有采用的是C#、.Net架构,Y公司全栈采用Java,Dubbo微服务架构,本人刚好在公司主导了几个Java项目实践,被分配到接手Y公司的部分项目。几个月下来,感触颇多,简记如下:

  1. 项目模块缺乏整体规划,同一功能出现在项目的多个模块中,重复代码比比皆是;
  2. 与第三方平台接口不规范,比如与X团的API接口中需要获取Token及加密,这样的接口本可以在一个地方统一实现,但却散落在各个地方,且用法不一;最奇葩的是明明对方的结果有返回代码(returnCode)和响应消息(message),却偏偏要自己定义一个枚举类来解释返回代码,最要命的是这个枚举是不完整的,结果就是有些代码找不到就抛出了一个异常”找不到对应的代码“云云,在调试过程中一头雾水……为什么不直接用第三方平台定义的错误代码和消息呢?
  3. 对于底层协议调用没有统一封装,最典型的比如HTTP协议,几乎所有的十几个项目中都有HttpUtil,从Header到PUT/GET/POST都要层层处理,不知道有OkHttp,更有上层封装Retrofit可以直接用吗?还有Json处理,甚至String处理都要写一堆,还各个项目各自为政,结果是出现了一堆无用的代码,臃肿还不能保证效率和正确性。

    上面的问题都可以归结为代码的规范性,如果大家是一个团队,就应该互通有无,有所分工,不要重复造轮子,首先要利用已经有的开源框架,其次要有统一的底层框架;这样既能提高整体效率,也保障了代码的稳定性和可维护性。试想,如果一个地方出了问题,比如第三方接口做了变化,那么上述的编码方式岂不是要改几十个地方?       其实规范性的重要性不言而喻,大家都懂,特别是对于团队开发而言,更是如此。那为什么实际执行下来就这么难呢?其实是一个团队领导力的问题,当今互联网行业,许多是赚快钱,只求快速上线,不出bug就行,至于怎么实现的,什么规范性、复用性,不值一提。但是仔细想想,日积月累,这些东西就变成了“负”能量,时刻在影响着你的产品质量,当然也包括成本。到最后,大家都改不动了,习惯了差,没有了改的动力,到这时候就是整个团队的悲哀了。说到底是一种文化和精神,如果一个公司只求眼前利益,没有对细节和质量的追求,那么永远也成为不了一家伟大的公司,为之工作的员工也只能浑浑噩噩,打更混日子了!