5 Designing Specification
设计规约
1. 方法在编程语言中的作用:
- 方法是程序的“积木”,可以被独立开发、测试和复用。
- 使用方法的客户端无需了解方法内部具体如何工作,这称为“抽象”。
2. 规约:编程中的沟通工具:
- 规约是程序与客户端之间达成的一致,明确双方的责任。
- 规约就像一个“防火墙”,保护客户端不受方法内部细节的影响,也保护实现者不受客户端使用方式的影响。
- 规约使代码的模块化和解耦成为可能,从而提高代码的可维护性和可扩展性。
3. 行为等价性:
- 不同的方法实现可以具有相同的行为,即它们对客户端的影响相同。
- 行为等价性需要根据规约来判断,而不是仅仅根据代码实现。
4. 规约的结构:
- 规约由前置条件、后置条件和异常行为组成。
- 前置条件是对客户端的约束,后置条件是对开发者的约束。
- 如果前置条件满足,则后置条件必须满足。
5. 规约的分类和强度:
- 规约可以根据确定性、陈述性和强度进行分类。
- 更强的规约意味着更严格的后置条件和更宽松的前置条件。
- 强规约和弱规约各有优缺点,需要根据具体情况选择。
6. 设计好的规约:
- 好的规约应该是内聚的、信息丰富的、足够强、足够弱、使用抽象类型。
- 规约应该清晰地描述方法的功能,并避免歧义。
- 是否使用前置条件取决于检查参数合法性的代价和方法的适用范围。
7. 总结:
- 规约是软件构造中不可或缺的工具,它有助于提高代码的质量和可维护性。
- 好的规约可以使代码更容易理解和修改,并减少错误的发生。