开发的时候可能我们会用到第三方包和使用开源代码或者是其他团队的开发的组件系统,不管是那种情况我们都得干净整洁的整合经自己的代码中。
所谓边界就是指外来代码和自己写的代码之间进行整合的连接区域。
1.使用第三方代码
第三方程序包和框架提供者追求普适性,这样能在多个环境中工作,吸引广泛的用户。而使用者则想要集中满足特定需求的接口。这样的情况可能会导致系统边界出现问题。
例子:
2.浏览和学习边界
如果第三方代码库的使用方法并不清楚,我们可能会花很多时间阅读文档再决定如何使用。在不了解的情况下不要在生产代码中试新东西,而是编写测试来浏览和理解第三方代码。Jim Newkirk把这叫做学习性测试。通过学习性测试,来检测自己对API的理解程度。
3.学习log4j
编写测试用例来学习第三方程序的API,再根据自己的需要进行封装,将应用程序的其他部分与log4j的边界接口隔离开来。
4.学习行测试的好处不只是免费
学习性测试的好处不光免费,还在投资上有正面回报,当第三方程序包发布了新版本,我们可以运行学习性测试,看看程序包的行为有没有改变。
5.使用尚不存在的代码
使用不存在的代码时,可以先定义自己需要的接口,然后编写类调用接口。当第三方程序或者开源代码暂时还没有提供我们所需的API时,可以暂时根据具体业务,定义我们所需的API,并使用。等真实的API被开发出来,再接入相应的接口。这样的好处是,有助于保持客户代码更可读,且集中于它该完成的工作。
6.整洁的边界
边界上肯跟会发生的事有很多,改动是其中之一。有良好的软件设计,无需巨大投入和重写即可进行修改。在使用我们控制不了的代码时,必须加倍小心保护投资,确保未来的修改不至于代价太大。
7.总结
保持边界整洁,可以避免我们的代码过多依赖第三方程序的内部实现细节,减少第三方程序对我们代码的入侵程度,尽可能降低因第三方程序修改而对我们代码产生的影响。