最近 CR 了这样一段代码:

原来,我们的代码就是这样被污染的...

咱们团队的变量命名标准是小写驼峰,可是这儿能够看到,一个 http api 接口恳求的东西函数的入参却是下划线。这是一个内部项目,前后端都是咱们团队开发的。这个项目的代码随处都能看到这样的不符合标准的痕迹,并且屡禁不止。我不禁在想,为什么会这样?

先探求一下这个问题的外表原因,让咱们从底层开端:

  • DB 表结构依照团队标准,字段名是下划线分隔的
  • node 服务界说 entity 的时分,直接复用 DB 表结构字段名
  • service 模块在查询 DB 之后,直接回吐结果,所以 service 类回来的数据结构的变量名也是下划线的
  • node api 的 controller 经过调用 service 模块的函数,获取数据处理之后,也直接回吐下划线的变量名的数据结构
  • 因为 node api 的接口协议是下划线的,所以 web 页面恳求 http api 的出入参也是下划线的,如上图所示
  • 因为 http api 回来的结果是下划线的,然后页面逻辑直接使用,最终,页面逻辑也出现了大量下划线

这是一段挺长的链路,只需咱们在后面的任意一个环节处理一下变量名的转化,都能防止这个问题,可是并没有。

原来,我们的代码就是这样被污染的...

为什么会这样?略微探求一下这儿的深层原因,也是挺有意思的。

首要,项目启动时没有严格把控代码质量。这儿的原因有许多,比方项目工期紧、首要以完结功用为主、内部项目不需要要求这么严格、项目启动时是直接 copy 别的一个项目的,那个项目也是这样写的等等。可是,这些统统都是借口!我是要负首要职责的。

其次,没有开发同学想过要去优化这儿的代码。参加这个项目的同学并不是不知道怎么去解决这个问题,但便是没人想要去解决这个问题。咱们更多的是挑选“入乡随俗”,他人这么写,我也这么写吧。

最终,Code Review 没有严抓。问题都是越早处理本钱越小,如果在早期咱们就开端严抓 Code Review 的话,说不定就能及时改善这个问题了。

这个事例是一个非常实在的破窗效应事例,这儿面有不少地方值得咱们深思的。

首要,它会污染整个项目。如果咱们在项目的一开端就没有把控好代码质量,那咱们的项目代码很快就会被污染。最开端的开发同学或许知道历史原因,自然不会觉得不自然。后续参加的维护者看到项目代码是这姿态的,就会误以为这个项目的代码标准便是这姿态的,于是也“入乡随俗”,最终整个项目的代码就被污染,破烂不堪。

其次,它会污染依靠的项目。比方这儿便是 node 项目先被污染,对外提供的 api 也遭到污染,然后调用这些 api 的 web 项目也被污染了。许多时分,api 的接口协议都是由后端开发来定,如果碰到一些缺乏经历的后端开发,前端同学会收到一些很奇怪的接口协议,比方字段命名标准不一致,冗余字段,规划不合理等等,因为前端的话语权较弱的缘故,很或许会被动承受,如果处理不妥,前端项目的代码就会遭到污染了。

最终,它会污染整个开发团队!草创的开发同学就不说了;后续的维护者看到代码是这姿态的,不是过错认知这个项目的代码标准,便是过错认知团队的代码标准;更为糟糕的是,阅读项目源码的其他同学也会遭到污染:“哦,原来他人也是这样写代码的”。噩梦由此而生…

原来,我们的代码就是这样被污染的...

破窗就像病毒一样,快速并张狂地污染整个项目代码,然后感染给开发团队,最终扩散到其他团队。这个病毒感染的范围很广,速度很快,一不留神,整个团队就会沦亡。那咱们应该怎样医治呢? 首要有 3 个方向:

首要,增强个人免疫力。构成个人的编码风格,然后坚持它,这是治本的良方。杰出的编码风格是不会损坏个人的编码功率的,反而会有助于提高个人的研制功率,首要体现在以下几个方面:

  • 减少初级过错
  • 提高代码的可阅读性,提高代码的可维护性,从而提高团队协作功率
  • 构成“肌肉记忆”,提高编码功率
  • 防止返工,首要体现在糟糕的规划问题和编码风格冲突问题

其次,做好防护,防止传播。比方咱们这个简单的事例,在整个链路的任何一个环节,都能轻松处理这个问题,这样就不会传播到后面的环节了。许多人碰到一些历史破窗代码时,或许会觉得修正这些破窗本钱太大了,那就不要去修正,只需要保证自己写的新代码是杰出的,也是一个不错的计划。现已中毒的人咱们没有才能医治的时分,最少,咱们能够认真做好防护,防止病毒进一步传播!

最终,对症下药医治。只要千日做贼,那有千日防贼,咱们总是需要想办法医治这个病,而治病的药方便是重构。这儿就不深化讲了,重构也是个大学问,只需要知道,越早重构,本钱越低,比方在 Code Review 的时分就要严抓这些问题,并盯梢修正状况。

不知道,你的“免疫力”修炼得怎么样了?

【谈论问题】

除了这儿的事例,还有许多其他类型的破窗,你都碰到了哪些?

欢迎在谈论区分享你的想法,一起谈论。

—————-【END】—————-

【揭露调研】

后续计划做一些个人工作开展相关的总结输出,想要做个简单的调研,期望咱们能够一起参加:wj.qq.com/s2/12385427…

欢迎加我v【longyiyiyu】,进行无负担沟通,我会

  • 长期工作开展规划指导
  • 近期工作重点沟通
  • 职场解惑
  • 面试教导

也欢迎重视大众号【潜龙在渊灬】,收获程序员职场相关经历、提高工作功率和职场效能、结交更多人脉。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。