WEB开发网
开发学院软件开发Java 演化架构和紧急设计: 利用可重用代码,第 1 部分:... 阅读

演化架构和紧急设计: 利用可重用代码,第 1 部分:代码与设计之间的关系

 2010-05-13 00:00:00 来源:WEB开发网   
核心提示: 图 1. 越靠后做决定,做出的决定就越符合实际精益软件运动有一个很好的概念叫做 最后可靠时刻(last responsible moment) — 不是将决定推迟到最后时刻,演化架构和紧急设计: 利用可重用代码,第 1 部分:代码与设计之间的关系(3),而是最后可靠时刻,等待的时间越

图 1. 越靠后做决定,做出的决定就越符合实际
演化架构和紧急设计: 利用可重用代码,第 1 部分:代码与设计之间的关系

精益软件运动有一个很好的概念叫做 最后可靠时刻(last responsible moment) — 不是将决定推迟到最后时刻,而是最后可靠时刻。等待的时间越长,就越有机会拥有适合的设计。

表达性

Reeves 论文中的另一个结论是围绕可读设计的重要性的,可读设计又转换成更加可读的代码。发现代码中的惯用模式已经够难了,但是如果语言中再加上一些额外的晦涩的东西,那就会难上加难。例如,发现汇编语言代码基中的惯用模式就非常困难,因为该语言强加了太多晦涩的元素,必须环顾四周才能 “看到” 设计。

既然设计就是代码,那么应该尽量选择表达性最强的语言。充分利用语言的表达性有利于更容易地发现惯用模式,因为设计的媒介更清晰。

下面是一个例子。在本系列较早的一期(“组合方法和 SLAP”)中,我应用组合方法和 单一抽象层(SLAP)原则,对一些已有代码进行了重构。清单 1 显示我得出的顶层代码:

清单 1. 改进后的 addOrder() 方法的抽象

public void addOrderFrom(ShoppingCart cart, String userName, 
           Order order) throws SQLException { 
  setupDataInfrastructure(); 
  try { 
    add(order, userKeyBasedOn(userName)); 
    addLineItemsFrom(cart, order.getOrderKey()); 
    completeTransaction(); 
  } catch (SQLException sqlx) { 
    rollbackTransaction(); 
    throw sqlx; 
  } finally { 
    cleanUp(); 
  } 
} 
 
// remainder of code omitted for brevity 

上一页  1 2 3 4 5 6 7  下一页

Tags:演化 架构 紧急

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接