现在的位置: 首页 > 综合 > 正文

On Simple Design III

2012年06月26日 ⁄ 综合 ⁄ 共 719字 ⁄ 字号 评论关闭

简单 != 可以有Bug

“这种错误情况先不用处理了吧, 简单设计嘛!”

简单不是偷懒的借口. 简单设计是一种宏观的设计策略, 并不意味着微观上的偷工减料:

  • 你可以没有这个功能, 但有的话必须是不能出错的.
  • 是对无法预知的需求推迟设计决定, 而不是对已知的需求视而不见
  • 这种错误情况可能确实不需要现在处理, 但理由不应该是简单设计, 而是价值和优先级分析


简单 != 功能不完整

“这个功能先不用做了, 简单设计嘛!”

当听到这种说法的时候, 请确保团队的理解是一致的:

  • 在产品设计上可能也会有"简单设计"之类的原则, 尽可能的简化功能, 突出主要卖点
  • 但我们提到简单设计的时候, 更多的是指软件架构不要过度设计, 而不是功能.
  • 最终这个功能可能确实不需要现在做, 但理由不应该是用于指导架构设计的"简单设计", 而是价值和优先级分析.


简单设计 != 不预先设计

简单设计最大的争议在于: 现在还没有这个需求, 但我很清楚这是这个domain固有的问题, 我要不要为此做设计?

其实简单设计原则有一个隐含的前提: 架构是由需求决定的. 这可以是对的. 但它忽视了另外一个事实, 就是不只有一个架构, 不只有一种设计, 才能满足需求. 另外一个更有力的事实是: 可能存在一种基本的模型, 能适应不同的需求

如果你依靠对domain的洞察力, 可以设计出一种模型, 使得即使其考虑了尚未出现的需求, 也依然比现在的模型简单, 那何乐而不为?

争议在于模型复杂了怎么办? 那就按兵不动, 静观其变吧. 争议在于按兵不动日后再动的话可能成本更高. 这是有可能的, 我也不认为有什么算法可以算出此时该如何. 推荐大家看看< < Lean Architecture > >会有帮助


See also:

抱歉!评论已关闭.