程序员修炼之道从小工到专家读后感(五)

发布时间 2023-12-18 19:04:13作者: 麹义

1.解耦与得墨忒耳法则

函数的得墨忒耳法则试图使任何给定程序中的模块之间的耦合减至最少,它设法阻止了你为了获得第三个对象的方法的访问而进入某个对象,写代码的时候要使模块间的耦合减至最低,对我来说尚早但还是要避免了牵一发而动全身的可能性。我们应该跟多的考虑如何怎样进行设计,使系统中的事物保持逻辑上的解耦。使用该法则可以我们的代码适应性更好。可以使用委托来使服从墨忒耳法则更容易。

2.元程序设计

为了让我们的系统变得高度可配置。要配置,不要集成。元数据使关于数据的数据,是对应用进行描述的数据。要用元数据描述应用的配置选项:调谐参数,用户偏好,安装目录等。元数据不仅能用来配置简单的偏好,也要尽可能多的通过元数据配置和驱动应用。将抽象放进代码,细节放进元数据。这句没有很理解。

这种方法有若干好处:1)它迫使你解除你的设计的耦合,从而带来更灵活、可适应性更好的程序。
2)它迫使你通过推迟细节处理,创建更健壮更抽象的设计一完全推迟到程序之外。
3)无需重新编译应用,你就可以对其进行定制你还可以利用这一层面的定制,轻松地绕开正在运行的产品系统中的重大bug。
4)与通用的编程语言的情况相比,可以通过一种大为接近问题领域的方式表示元数据。
5)你甚至还可以用相同的应用引擎—一但是用不同的元数据——实现若干不同的项目。

建议以纯文本的方式配置元数据,读取该配置可以编写能在运行时重新加载其配置的程序。

要提高程序的适应性,否则会被淘汰的。

3.时间耦合,时间有两个方面对我们非常重要:并发和次序。我们需要容许并发,并考虑解除任何时间或次序上的依赖。分析工作流,以改善并发性。可以通过UML活动图,或者通过构建架构,使系统中的每一个实体都是一个独立实体,与其他组件一起并发运行。对时间解耦的优势使它更易于编写。对并发进行设计,对静态或全局变量加以保护,设计更简洁的接口。灵活地处理应用的部署方式。设想侦探破案的过程,他借助于一块黑板,把不同线索写出来;其他侦探也可以写下自己的推断和已掌握的案情细节。所有这一切串联起来将共同帮助案件侦破,但不同的线索之间是可以独立进行的。这里的黑板可以抽象为一种处理事件的模型。不同于原始的工作流需要考虑各种状况,不同组合,先后顺序等,黑板系统只管写入,读取,查询,通知等基础功能,任意符合条件的事件都可以进入这个系统。黑板模型也是一种解耦形式。