《程序员修炼之道》第五章 弯曲,或折断的阅读笔记
这一章的主题是如何让代码更灵活和可适应,以应对需求和环境的变化。作者提出了以下几个策略:
遵循得墨忒耳法则:让每个对象只与它的直接朋友交流,避免过多的依赖关系和组合爆炸。这样可以降低代码的耦合度,提高可读性和可维护性12。得墨忒耳法则是一种软件开发的设计指导原则,特别是面向对象的程序设计。它要求一个对象只能调用以下几种对象的方法:自己、传入的参数、自己创建的对象、自己直接持有的对象。这样可以避免一个对象对另一个对象内部结构或状态的过多了解,也可以减少代码中的点号链 。
使用元数据驱动程序:把一些细节从代码中移出,用纯文本或其他形式的元数据来表示。这样可以提高代码的抽象度,减少重复代码,增加可配置性和可扩展性34。元数据是关于数据的数据,可以用来描述数据的属性、结构、约束、来源等信息。使用元数据可以让程序更容易适应变化,也可以让程序更接近问题领域。例如,使用XML或JSON来定义界面布局,使用SQL或HQL来查询数据库,使用正则表达式来匹配字符串等 。
解除时间上的耦合:考虑程序中的并发和次序问题,尽量让不同的模块可以异步地运行,而不是依赖于特定的时间顺序。这样可以提高程序的性能,利用多核处理器,也可以避免死锁和竞态条件5 。时间上的耦合是指程序中不同模块之间存在时间上的依赖关系,例如一个模块必须在另一个模块之前或之后执行,或者两个模块必须同时执行。这样会增加程序的复杂度和风险,也会限制程序的并发能力。解除时间上的耦合可以通过使用异步编程、事件驱动、消息队列等技术来实现 。
将模型与视图分离:使用观察者模式或者MVC模式来分离程序中的数据模型和用户界面。这样可以让模型和视图互不干扰,也可以支持多种视图和控制器 。模型与视图分离是一种常见的软件架构模式,旨在将业务逻辑和展示逻辑分开处理。模型是指数据和操作数据的方法,视图是指显示数据和接收用户输入的界面,控制器是指协调模型和视图之间交互的组件。使用模型与视图分离可以提高代码的可重用性、可测试性和可维护性 。
使用黑板模式:使用一个共享空间来让不同的对象匿名地交换数据,而不是直接通信。这样可以实现完全的解耦,也可以支持动态地添加或删除对象 。黑板模式是一种分布式人工智能系统中常用的设计模式,用于解决复杂且难以形式化的问题。黑板是指一个共享的数据结构,用来存储和更新问题的状态和部分解决方案。对象是指一些专家模块,用来根据黑板上的数据产生或修改解决方案。控制器是指一个协调对象之间活动的模块。使用黑板模式可以让对象之间保持独立和异步,也可以方便地增加或删除对象 。