重温《Unix设计哲学》
重温Unix设计哲学
这个世界是复杂的,但往往本质的东西都是简单的。这些原则,不光是用在程序开发,也适用于架构设计,产品设计等等地方。
-
简洁原则:以简洁为美
不要为了满足自己的虚荣心,企图搞一些花哨的东西。而是要:以简洁为美,总是设法将程序系统分解为几个能够协作的小部分,并本能地抵制任何用过多噱头来粉饰程序的企图。这就有点 Unix文化的意味了。
-
吝啬原则:除非确无它法,不要编写庞大的程序
“大”有两重含义:体积大,复杂程度高。程序大了,维护起来就困难,项目就越容易失败。 -
透明性原则:设计要可见,以便审查和调试
软件系统的透明性是指:你一眼就能够看出软件是在做什么,以及怎样做的。显见性指:程序带有监视和显示内部状态的功能,这样程序不仅能够运行良好,而且还可以看得出它以何种方式运行。
-
模块原则:使用简洁的接口拼合简单的部件
要编制复杂软件而又不至于一败涂地的唯一方法就是:降低其整体复杂度。也就是:用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身。
-
分离原则:策略同机制分离,接口同引擎分离
这里所谓的机制:比如后台服务根据某个业务逻辑,计算后输出数据。而策略,就是如何使用这些数据。
-
表示原则:优先用数据(数据结构)来表示知识,而不是用代码
更进一步:在设计中,主动将代码的复杂度转移到数据中去。比如:用数组初始化器来表示转换表,而不是switch;用指针数来表示逻辑关系,而不是用50行代码的流程图来实现。
-
沉默原则:如果一个程序没什么好说的,就保持沉默
只输出用户关注的信息,而不是什么信息都打印。
设计良好的程序将用户的注意力视为有限的宝贵资源,只有在必要时才要求使用。
-
优化原则:雕琢前先得有原型,跑之前先学会走
先实现功能,让软件运行起来,再对局部进行进一步优化。