现在的位置: 首页 > 综合 > 正文

4.2 紧凑性和正交性——UNIX编程艺术学习笔记

2013年04月09日 ⁄ 综合 ⁄ 共 1098字 ⁄ 字号 评论关闭
文章目录

1.1.1  紧凑性

紧凑性就是一个设计能否装进人脑的特性。——它是设计的可读性?

紧凑不等以薄弱:如果一个设计构建在易于理解利于组合的抽象概念上,则这个系统能够在具有非常强大、灵活的功能同时保持紧凑性。

紧凑不等于易于学习:对于某些紧凑设计而言,在掌握其精妙的内在概念模型之前,要理解这个设计有些困难;但是一旦理解了这个模型,则学习相对简单。

lisp就是一个典型的紧凑性的设计:特性非常简单,几十行代码就可能写一个解释器。但是,它可以做很多复杂的东西。

c和Python是半紧凑的,perl,java,shell则不是。c++是反紧凑的,但是他的子集是半紧凑的。

1.1.2  正交性

正交性是有助于使复杂设计也能紧凑的重要特性之一。在纯粹的正交设计中,所有的操作均无副作用;每一个动作(无论是API调用,宏调用或者语言运算)只改变一件事情,不会影响其他。无论你控制的是什么系统,改变一个时期的方法有且只有一个。

正交性的障碍在于便利性,人们经常为了便利性牺牲正交性。

1.1.3  SPOT原则

不要重复你自身(Don’t Repeat Yourself)——《程序员修炼之道》

:每一个知识点在系统中只有一个唯一,明确,权威的表述,也就是真理的单点性(Single Pointer Of Truth)。

这里的真理或者知识点,不单单是指函数逻辑,同时也包含数据。

如果实际确实需要重复,则需要想办法做一些优化,比如,可以尝试写一个函数,工具,或者代码生成程序,让其中一个由另一个生成。

数据结构的SPOT原则:无垃圾,无混淆。数据结构不要太通用,太面面俱到。现实中的明晰的状态在结构中也同样明晰。

数据驱动编程,代码生成在一定程度是也是遵循的SPOT原则。

1.1.4  紧凑性和强单一中心

提高紧凑性有一个精妙强大的方法:围绕“解决一个定义明确的问题”的强核心算法组织设计,避免臆断和捏造。——不是很理解。这里的表示不清楚。

这一点我大致理解:对于一个问题,最好能够找到一个核心算法来解决这个问题,而非使用试探法。

首先我们应该在解决问题之初努力去寻找这样的一个方案,但是并不是所有的问题都可以找到这样的一个算法。有的时候还必须使用试探法。

1.1.5  分离的价值

限制不仅提倡了经济性,而且某种程度上提倡了设计的优雅。

要达到这种简洁性,尽量不要去想一种语言或操作系统最多能做多少事情,而是尽量去想这种语言或操作系统最少能做的事情——不是带着假想行动,而是从零开始。

要达到紧凑正交的设计,就从零开始。禅教导我们:依附导致痛苦;软件设计的经验教导我们:依附于被人忽略的经验将导致非正交,不紧凑的设计,项目不是失败,就是成为维护的梦魇。

这一节看不懂。

抱歉!评论已关闭.