如何在团队中避免重复

程序员修炼之道 提示11:DRY - Don’t Repeat Yourself.

重复意味着糟糕、浪费。

导致重复

管理者的魄力

管理者很有可能意识到重复的危害,却没有魄力去推动成员去落实。这是致命的。

成员的无意识

在一个团队中,团队成员很有可能没有意识到重复的可怕。或许有人会觉得,别人的代码写的很糟糕,自己需要再写一套;有人会觉得,使用别人的轮子,自己无法进步,还是自己造一套来得好;还有人会觉得,这都无所谓,尽快完成工作,我维护的模块没有问题就行了,用不着管自己是否与别人重复。

在一个团队中,团队成员可能意识到重复的可怕,却没有认识到可能潜伏重复的方方面面。譬如,面向对象设计中类接口中成员函数/数据成员功能的重复。

避免重复

团队意识

团队中成员需要坚持以重复为耻,以复用为荣的团队意识。团队意识落实到团队成员身上,具体表现如下:

  • 团队成员必须认识到:重复的危害、重复的内容、如何避免重复。
  • 团队成员必须认识到公共库的重要性,对于可构建公共库的内容,需主动提出评审。
  • 团队管理者在管理重复一事上,必须要有决心,不可容忍重复的出现。

代码评审

除非很熟悉该段代码的逻辑,否则代码评审很难在较短时间内,发现代码逻辑上的问题。但为什么这里又要强调代码评审呢?

  • 代码评审督促代码撰写者写出更好地代码;
  • 代码评审能够发现代码撰写者是否重复;
  • 代码评审增加团队成员之间的交流,使复用的可能性增加。

避免注释

注释是对代码的重复,如果代码可以做到自解释,则避免注释。

构建公共库

1、评选出技术能力强、责任心强的团队成员负责管理公共库。

2、制定并遵守一套公共库构建原则

若公共库已经存在开源版本实现,且该实现经过同行复审、商业应用、存在开发者持续修复问题,则推荐直接使用该实现的稳定版本。在无合适的开源实现情况下,构建公共库需要遵守几个原则:

  • 公共库的构建必须紧随开发需求或技术规划,不可为了构建公共库而构建,公共库构建前必须经过评审。
  • 公共库的构建与评审必须由有经验、技术能力强、代码风格好的成员来负责。
  • 开发完成的公共库必须要经过完备的测试(譬如单元测试)才可应用到发布软件中。

经开发并测试完成的公共库,可以使用nuget或conan来进行管理,方便团队成员使用。

3、重构糟糕的公共库

需要重构的公共库,一定是糟糕的公共库。糟糕的公共库很有可能给团队成员不好的体验,使用这样的公共库,大多数程序员都有自己重新写一套的冲动。发现糟糕的公共库,务必要第一时间安排人员重构。保证共同库使用者的良好体验,是一个公共库管理者的责任。

必要的重复

文档是对代码的重复,但却也是不可或缺的。


本文作者:ZeroJiu
本文链接: http://www.freehacker.cn/complete/dry/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!