每个模式都承载着一点点理论。但实际编程中存在一些更加深广的影响力,远不是孤立的模式所能概括的。本章将会讲述这些贯穿于编程中的横切概念,它们被分为两类:价值观和原则。
价值观是编程过程中的统一支配性主题。珍视与其他人沟通的重要性,把代码中多余的重复性去掉,并保持开放的心态,这才是我们工作状态最佳的表现。
这些价值观——沟通、简单和灵活——影响了我们在编程时所做的每个决定。
价值观、原则和模式的关系:
- 价值观有普遍的意义,但是往往难以直接应用;
- 模式虽可以直接应用,却是针对于特定的情景;
- 原则在价值观和模式之间搭建了桥梁。
- 模式描述了要做什么,价值观提供了动机,原则把动机转化成了实际行动。
价值观
沟通——如果阅读者可以理解某段代码,并且进一步修改或使用它,那么这段代码的沟通效果的很好。
简单——去掉多余的重复性可以让那些阅读、使用和修改代码的人更容易理解。有些复杂性是内在的,它们准确的反应出所要解决的问题的复杂性。但有些复杂性的产生完全是因为我们忙着让程序运行起来,在摆弄的过程中留下的“指甲印”没擦干净。这种多余的复杂性降低了软件的价值。
灵活——灵活是衡量那些低效编码与设计实践的一把标尺。因为程序的绝大部分开销都是在它第一次部署以后才长生,所以程序必须要容易修改。想象中明天或许会用得上的灵活性,可能与真正修改代码时需要的灵活不是一回事。这就是简单性和大规模测试所带来的灵活性比专门设计出来的灵活性更有效的原因。要选择那些提倡灵活性并能够带来及时收益的模式。对于会立刻增加成本但却缓慢的模式,最好让自己多一点耐心,先把它们放回口袋里,需要的时候再拿出来。这样就可以用最恰当的方式使用它们。
原则
实现模式并不是无缘无故产生的。每一种模式都或多或少体现了沟通、简单和灵活这些价值观。原则是另一个层次上的通用思想,比价值观更贴近于编程实际,同时又是模式的基础。