代码质量差,是程序员的错吗?

代码质量差,是程序员的错吗?

所有的技术团队都宣称自己重视代码质量,要求新人学习代码规范,也搞代码审查,实际上代码依然乱成一锅粥。我在职场经历过大大小小十多个技术团队,只有一个小团队的代码质量勉强合格,也只是遵循了基本的代码规范而已,代码可读性依然有很大提升空间。但是,几个核心的程序员离职后,新加入的同事迅速堆砌了大量低质量代码。这些代码差在哪儿呢? 我随便举几个例子:

  • 变量命名太随意,其他人看不懂
  • 方法或者函数的代码量过长
  • 大量重复代码,模块化不足
  • 没有单元测试或者单元测试覆盖率低

评价代码质量有一定的主观性,但是行业里有客观的衡量标准,高质量的代码至少具备下面四个特性:

  • 可维护性:当修改老代码、增加新代码的时候,维护者的风险低、工时短,这需要做好代码分层、模块化、高内聚、低耦合、面向接口设计等等措施。

  • 可读性:维护者很容易读懂代码,代码执行逻辑符合维护者直观的预期。Google 内部有个认证叫作 Readability。只有拿到这个认证的工程师,才有资格在代码审查的时候,批准别人提交代码。代码的可读性非常影响可维护性。

  • 简洁性:遵循 KISS (Keep It Simple、Stupid)原则,保持代码简单、逻辑清晰,也就意味着易读、易维护。

  • 可测试性:可测试性是衡量代码质量的重要指标。测试人员的功能测试效率低,有时候也无法覆盖所有逻辑,单元测试是开发人员最重要的自测手段。

大多数程序员都把代码看成自己的脸面,不会刻意制造垃圾代码,并且渴望写得更好。代码质量差,不全是程序员的错,主要是社会环境和行业特性造成的。

  • (1)赚快钱

赚快钱,是中国人的核心创业理念。

很少企业投资开发基础软件比如操作系统、数据库,这些项目难度大、投入高、回报周期长,国内大部分项目都是偏应用层的,比如电商、资讯、工具软件。通常项目寿命不超过五年,其中互联网项目活不过两年,生存的压力不允许“慢工出细活”。面向用户端的项目,总是用90%的精力开发10%的用户才使用的功能,需求特别多、迭代特别快。老板催产品,产品催技术,压缩开发人员的时间,谁还顾得上代码质量?

  • (2)离职率高

IT行业是一个热钱涌动的地方,每年都诞生很多新公司,有实力的人愿意跳槽去创业公司。相比传统行业,互联网大厂更喜欢挖角,加上生活压力也很大,程序员的跳槽率比较高。在软件项目管理中,一旦人员频繁的变动,经常交接代码,质量控制就很难了。我曾经在某电商公司任职,与分公司交接项目,那边的同事任职最长的人还没有转正,就是不足三个月。

  • (3)不尊重劳动者

我大清自有国情在,无论是法律还是道德上,都没有尊重过基层劳动者。软件明明是智力产品,却搞得跟成挖煤一样,煤挖得太慢?那就多上点人,每天多挖几个小时。生产任何智力产品,工作时长与产出都不成正比,只有人在轻松愉悦的状态下,生产效率才最高。人力资源调度属于管理学范畴,如果说管理学是一门科学,那么大部分公司还处在跳大神阶段。

以上三个原因导致我们的日常开发现状是这样的:

  • (1)现阶段业务交付压力大,优先实现业务逻辑,没精力关注代码质量。持续累积坏代码,开发效率逐步下降,导致后续业务交付压力越来越大。
  • (2)为了应对业务交付压力,往往倾向于增加人力,增加人力必然增加沟通成本,新手当熟手用,进一步产生更多的坏代码,恶性循环。

我认为,小公司不必在代码质量上投入太多精力,但是代码审查、应用代码规范检查工具是底线。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注