演化架构和紧急设计:利用可重用代码,第1部分 - 代码与设计之间的关系 - 编程入门网
尤其是在我们所构建的软件的 复杂性不断攀升的背景下。考虑到软件开发成为主流也才大约 50 年的光景,通常的企业软件的复杂性已 经令人瞠目。
演化架构和紧急设计:利用可重用代码,第1部分 - 代码与设计之间的关系(2)时间:2011-08-18 IBM Neal FordReeves 的论文得出的另一个结论是,在目前,软件中的设计(也就是编写整个源代 码)是最昂贵的活动。也就是说,在设计时所浪费的时间是最宝贵的资源。这将我们带回到紧急设计上来 。如果在开始编写代码之前,花费大量的时间试图参与到所有的事情中来,那么您总会浪费一些时间,因 为一开始有些事情是未知的。换句话说,在编写软件时,您总是陷入意想不到的时间黑洞,因为有些需求 比您想象的更复杂,或者您一开始并没有完全理解问题。越靠后做决定,就越有把握作出更好的决定 — 因为您所获得的上下文和知识是与时俱增的,如 图 1 所示: 图 1. 越靠后做决定,做出的决定就越符合实际 精益软件运动有一个很好的概念叫做 最后可靠时刻(last responsible moment) — 不是将决定推 迟到最后时刻,而是最后可靠时刻。等待的时间越长,就越有机会拥有适合的设计。 表达性 Reeves 论文中的另一个结论是围绕可读设计的重要性的,可读设计又转换成更加可读的代码。发现代 码中的惯用模式已经够难了,但是如果语言中再加上一些额外的晦涩的东西,那就会难上加难。例如,发 现汇编语言代码基中的惯用模式就非常困难,因为该语言强加了太多晦涩的元素,必须环顾四周才能 “ 看到” 设计。 既然设计就是代码,那么应该尽量选择表达性最强的语言。充分利用语言的表达性有利于更容易地发 现惯用模式,因为设计的媒介更清晰。 下面是一个例子。在本系列较早的一期(“组合方法和 SLAP”)中,我应用组合方法和 单一抽象层 (SLAP)原则,对一些已有代码进行了重构。清单 1 显示我得出的顶层代码: 清单 1. 改进后的 addOrder() 方法的抽象
演化架构和紧急设计:利用可重用代码,第1部分 - 代码与设计之间的关系(3)时间:2011-08-18 IBM Neal Ford这看上去可以作为不错的惯用模式积累起来。积累惯用模式的第一种途径是使用 “原生” 语言(即 Java),如 清单 2 所示: 清单 2. 重构惯用的 “工作单元” 模式
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |