作者:尼克拉斯尼尔森(Niclas Nilsson)
你的开发人员在重复无须思考的工作吗?代码里反复出现某些相似的片段?某些代码是复制粘贴后略加修改而成的?如果出现这些情况,说明团队工作效率不高。别不信,罪魁祸首很可能是你。
听我解释之前,先来看看两条公认的软件开发的真理:
- 复制是魔鬼。
- 重复性的工作拖累开发进度。
作为架构师,你的工作直接影响团队的开发风格。你最了解系统的全貌,没准还写了一个端对端的系统垂直切片(vertical slice)作为示范——一个反复使用过的示例。如果开发人员复制示例代码里的内容——无论是几行代码、XML文件,还是类——说明这些部分还可以简化,甚至全部抽出来(abstracted away)。复制的部分通常不属于领域逻辑(domain logic),而是承担底层工作的基础性代码。因些,架构师一定要警惕示例可能产生的影响。这些代码和配置将成为成千上百个系统切片的模板,应该做到简洁,意图明确,只包含无法抽取的、与领域问题相关的内容。架构师应该对那些可能重复的内容保持高度警惕,因为你的每行代码都会(不可思议地)被复制。
不相信自己的系统会出现这样的情况?检查一下配置文件吧,假设把它用于其系统切片,哪些地方需要修改?哪些地方可以保留?再瞧瞧典型的业务层方法是不是存在与其他方法重复的部分,比如事务处理、登录、身份验证、审核等?还有数据访问层,除了实体名和字段以外,有没有其他内容重复出现?然后加大搜索范围,系统里是不是总有两三行代码反复在一起出现,虽然每次操作的对象不同,其实功能一样的?以上这些都是典型的重复。开发人员阅读代码时,迟早会忽略掉重复出现的代码,因为他们会逐渐找出规律,知道哪些才是有价值的代码。但是,就算开发人员找出了规律,重复的代码还是会影响大家的开发效率。这样的代码只适合交给计算机执行,不适合阅读和交流。
消灭重复的内容是你的责任,为此,应该重新研究框架,创造更完善的抽象机制,请专门制作工具的程序员(toolsmith)帮你完成切面框架(aspect framework),或者使用代码生成器,要想消灭重复内容必须有人采取行动。
这个人就是你。