《Linux/Unix设计思想》零散笔记

本文地址: http://www.cnblogs.com/raol/archive/2013/04/14/linux_unix_design.html

偏离了设计思想
1. 传递给函数调用的参数太多。
2. 子程序的长度超过了整个屏幕
3. 要靠阅读代码注释才知道子程序到底做了什么?
4. 获取目录列表的时候,屏幕显示不下这些原文件。
5. 某个文件很难控制, 无法定义程序的全局变量。
6. 开发程序的过程中, 无法记起错误信息是在什么条件下触发的。


每个程序都是过滤器。
程序够小。
每个程序做好一件事。


NIH综合征。

人类的进化的三个系统:第一个系统:压力,激情,兴趣(激发人们的想象力和概念); 第二个系统:第一系统带来价值,形成规模研究对第一系统进化扩展(笨重的大象);第三个系统:第一系统的加强,第二系统的简化。

对待功能和设计文档:(这个岂不是敏捷的原型
1.拱写简要功能规格文件(1.没有人真正知道人们想要什么;2.很难描述那些不存在的事物)
2.编写软件(并不是说没有设计就投入编写)
3.迭代测试,迭代开发
4.有必要时写详细文档。


高效率:越高效率越底层, 移植性越差。Unix舍弃高效率(让intel来做吧)
杠杆效应:想办法让别人分担,分享自己的代码。

CUI:强制用户界面接口

沉默是金: Unix命令没有查找到结果时,不输出任何东西,返回命令行。

层次化思考。

内核小而轻量化。

条目梳理:
(1) 小即是美。
(2) 让每一个程序只做好一件事情。
(3) 尽快建立原型。
(4) 舍高效率而取可移植性。
(5) 使用纯文本文件来存储数据。
(6) 充分利用软件的杠杆效应。
(7) 使用shell脚本来提高杠杆效应和可移植性。
(8) 避免强制性的用户界面。
(9) 让每一个程序都成为过滤器。
次要准则:
(1) 允许用户定制环境。
(2) 尽量使操作系统内核小而轻巧。
(3) 使用小写字母,并尽量保持简短。
(4) 保护树木。
(5) 沉默是金。
(6) 并行思考。
(7) 各部分之和大于整体。
(8) 寻找90%的解决方案。
(9) 更坏就是更好。
(10) 层次化思考。

-------------------------------------------------------------------------------------------------------------------------------------------------

分割线

--------------------------------------------------------------------------------------------------------------------------------------------------
工作狂往往不得要领。他们花大把大把的时间去解决问题,他们以为能靠蛮力来弥补思维上的惰性,其结果就是折腾出一堆粗糙无用的东西。如果你只是为了工作而 工作,那么你就会丧失判断力,你的价值 观和决策方式都是扭曲的。--来自<<重来>>

原文地址:https://www.cnblogs.com/raol/p/linux_unix_design.html