如何在团队中避免重复
程序员修炼之道 提示11:DRY - Don’t Repeat Yourself.
重复意味着糟糕、浪费。
导致重复
管理者的魄力
管理者很有可能意识到重复的危害,却没有魄力去推动成员去落实。这是致命的。
成员的无意识
在一个团队中,团队成员很有可能没有意识到重复的可怕。或许有人会觉得,别人的代码写的很糟糕,自己需要再写一套;有人会觉得,使用别人的轮子,自己无法进步,还是自己造一套来得好;还有人会觉得,这都无所谓,尽快完成工作,我维护的模块没有问题就行了,用不着管自己是否与别人重复。
在一个团队中,团队成员可能意识到重复的可怕,却没有认识到可能潜伏重复的方方面面。譬如,面向对象设计中类接口中成员函数/数据成员功能的重复。
避免重复
团队意识
团队中成员需要坚持以重复为耻,以复用为荣
的团队意识。团队意识落实到团队成员身上,具体表现如下:
- 团队成员必须认识到:重复的危害、重复的内容、如何避免重复。
- 团队成员必须认识到公共库的重要性,对于可构建公共库的内容,需主动提出评审。
- 团队管理者在管理重复一事上,必须要有决心,不可容忍重复的出现。
代码评审
除非很熟悉该段代码的逻辑,否则代码评审很难在较短时间内,发现代码逻辑上的问题。但为什么这里又要强调代码评审呢?
- 代码评审督促代码撰写者写出更好地代码;
- 代码评审能够发现代码撰写者是否重复;
- 代码评审增加团队成员之间的交流,使复用的可能性增加。
避免注释
注释是对代码的重复,如果代码可以做到自解释,则避免注释。
构建公共库
1、评选出技术能力强、责任心强的团队成员负责管理公共库。
2、制定并遵守一套公共库构建原则
若公共库已经存在开源版本实现,且该实现经过同行复审、商业应用、存在开发者持续修复问题,则推荐直接使用该实现的稳定版本。在无合适的开源实现情况下,构建公共库需要遵守几个原则:
- 公共库的构建必须紧随开发需求或技术规划,不可为了构建公共库而构建,公共库构建前必须经过评审。
- 公共库的构建与评审必须由有经验、技术能力强、代码风格好的成员来负责。
- 开发完成的公共库必须要经过完备的测试(譬如单元测试)才可应用到发布软件中。
经开发并测试完成的公共库,可以使用nuget或conan来进行管理,方便团队成员使用。
3、重构糟糕的公共库
需要重构的公共库,一定是糟糕的公共库。糟糕的公共库很有可能给团队成员不好的体验,使用这样的公共库,大多数程序员都有自己重新写一套的冲动。发现糟糕的公共库,务必要第一时间安排人员重构。保证共同库使用者的良好体验,是一个公共库管理者的责任。
必要的重复
文档是对代码的重复,但却也是不可或缺的。