《程序员修炼之道》第五章内容概述 :
解耦与得墨忒耳法则:倡导把代码组织成最小单位即模块,并限制它们之间的交互,以减少耦合。因为对象间直接的横贯关系可能导致依赖关系的组合爆炸,一个模块的改动会影响到许多无关模块。函数的得墨忒耳法则规定了对象调用方法的限制,即只能调用自身、传入参数、创建对象以及直接持有的组件对象的方法。
源程序设计:介绍了元数据是关于数据的数据,在运行时而不是编译时被访问和使用。通过将抽象放进代码,细节放进元数据,可使系统变得高度可配置,如屏幕颜色、提示文本等应作为配置项而非硬编码到项目中,要以声明方式思考,创建高度灵活和可适应的程序。
时间耦合:指出时间耦合涉及并发和次序两个重要方面。软件设计应容许并发,并解除时间次序上的依赖,可使用 UML 活动图进行工作流分析以改善并发性。在架构设计时,建议使用服务而非组件,饥饿的消费者模型是一种有效的负载平衡途径。
他只是视图:阐述了将程序划分成不同模块,每个模块具有单一明确责任的重要性。模块间通信可采用发布 / 订阅模式,即 Observer 模式,订阅者向发布者注册后接收事件通知;以及 Model-View-Controller 架构模型,它能分离模型与表示模型的 GUI,降低数据和视图间的相互影响 。
黑板:将黑板抽象为一种处理事件的模型,不同于传统工作流需考虑各种复杂状况和顺序,黑板系统只管基础的写入、读取、查询、通知等功能,任意符合条件的事件都可进入,这也是一种解耦形式,不同线索之间可独立进行,共同帮助解决问题。
《程序员修炼之道》第五章读后感
对解耦重要性的深刻理解:通过阅读,我深切认识到解耦在软件开发中的关键作用。在实际项目中,随着功能的不断增加和业务逻辑的日益复杂,如果代码之间的耦合度过高,一个小的改动可能会引发一系列意想不到的问题,导致整个系统的维护成本大幅上升。就像书中所讲,解耦能够使各个模块相对独立地发展和变化,当某个模块需要进行功能升级或修复缺陷时,不会对其他无关模块产生过多的影响,从而提高了系统的可维护性和可扩展性。这让我在今后的编程实践中,会更加注重代码的组织结构,尽量降低模块之间的耦合度,使系统更加灵活和健壮.
元程序设计的启示:元程序设计的理念为我打开了一扇新的思维之门。它让我意识到,在编写代码时,不仅要关注当前的功能实现,还要考虑到未来可能的变化和配置需求。将一些可变的因素,如界面显示的文本、颜色等配置信息,从代码中分离出来,通过元数据的方式进行管理,可以使程序更加易于配置和适应不同的运行环境。这种以声明方式思考的方法,能够让代码更加简洁和灵活,减少因需求变更而对代码进行大量修改的情况,提高了代码的复用性和可维护性.
时间耦合的思考:时间耦合的概念让我对软件系统中的时间因素有了更深入的思考。在多线程和分布式系统日益普及的今天,并发和次序问题是我们必须要面对的挑战。书中提到的解除时间次序上的依赖以及使用 UML 活动图进行工作流分析等方法,为我在处理这类问题时提供了很好的思路和工具。在设计系统架构时,要充分考虑到各个组件之间的时间关系,尽量避免因为时间上的先后顺序而导致的紧耦合,从而提高系统的并发性和性能.
模块通信方式的学习:他只是视图中介绍的发布 / 订阅模式和 Model-View-Controller 架构模型,让我对模块之间的通信和交互有了更清晰的认识。发布 / 订阅模式能够实现模块之间的松散耦合,使得消息的发送者和接收者之间不需要直接依赖,提高了系统的灵活性和可扩展性。而 MVC 架构则是一种经典的设计模式,将数据、视图和控制逻辑分离,使得各个部分可以独立地进行开发、测试和维护,降低了系统的复杂度。在今后的项目中,我会根据具体的业务需求,合理地选择和应用这些模块通信方式,以提高系统的架构质量.
黑板模型的借鉴意义:黑板模型作为一种特殊的解耦形式,为处理复杂的事件和数据提供了一种新的思路。它类似于一个共享的信息空间,各个模块可以在其中自由地写入和读取信息,而不需要关心其他模块的具体实现和处理逻辑。这种方式可以有效地降低模块之间的耦合度,提高系统的灵活性和可扩展性。在一些涉及到多任务协作、数据共享和复杂业务流程的项目中,黑板模型可以作为一种很好的解决方案,帮助我们更好地组织和管理代码.