最近 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】,进行无负担沟通,我会
- 长期工作开展规划指导
- 近期工作重点沟通
- 职场解惑
- 面试教导
也欢迎重视大众号【潜龙在渊灬】,收获程序员职场相关经历、提高工作功率和职场效能、结交更多人脉。



