Clean Code – 边界

By | 2019年4月21日

我们在使用第三方程序包或者开放代码时,有时需要让公司中的某些团队打造成组件或者子系统,这样可以将外来代码赶紧地整合到自己的代码中。

1. 封装使用第三方代码

第三方程序包和框架提供者追求普适性,这样就能在多个环境中工作,吸引广泛的用户。而使用者则想要集中满足特定需求的接口

例如,XmlUnit是一个比较两个XML文件或字符串的工具,它提供了很多特性,例如是否忽略空格,是否忽略注释,是否忽略属性的顺序,是比较相似呢(节点顺序可以不一样)还是比较相等(节点顺序需要一致)。真是项目中应该所有地方比较XML都是用一致的条件比较,所以只需要暴露一个接口给自己的应用程序。这样给团队中的其它成员减少了学习XmlUnit的成本,可以直接调用封装的接口比较XML。

2. 减少第三方代码变更对自己代码的影响

良好的软件设计,无需巨大投入和重写即可进行修改。

通常软件的的新版本都会兼容以前的版本,但是有时候软会升级会重写或接口变更。这时候在高版本的第三方代码时,如果有对其进行封装,我们只要在封装的接口处重新修改下,系统就能正常运行。并且我们会对封装的接口写测试代码,可以确保改写正确。

3. 学习性测试

对第三方代码编写测试代码,是学习第三方库的好手段,被称为学习性测试。当我们的测试代码复合预期,就可以对其打磨重构,起个好点的名字给团队其它人用。P.S. 这个很多人在用。

4. 使用还没开发好的代码

当所依赖的代码还没开发好的时候,我们就可以根据交互要求,定义交互边界。对边界接口,生成伪代码来开发当前系统。P.S. 这个我们经常用。