UNIX/LINUX设计哲学
原创
©著作权归作者所有:来自51CTO博客作者完美句号的原创作品,请联系作者获取转载授权,否则将追究法律责任
1. 大准则:
- 小即是美.
a. 能够有效的结合其他小事务.
- 让每个程序只做好一件事.
a. 通过集中精力应对单一任务,减少冗余代码,
b. 避免过高的开销、不必要的复杂性和缺乏灵活性.
- 快速建立原型,快速迭代.
a. 类似集市模式,快速迭代上线.
b. 根据用户的反馈,后续完善与改版.
- 舍弃高效率而取可移值性.
- 采用纯文本来存储数据.
a. 关于可移植性的准则中,往往忽视可移植性数据.
b. 不要存二进制,方便可读性.
- 充分利用软件的杠杆效应(软件复用).
a. 代码重用能帮助充分利用软件的杠杆效应.
b. 在相对较短的时间内编写出了大量应用程序.
- 使用shell脚本来提高杠杆效应和可移值性.
a. shell脚本可以加强软件的可重用性和可移植性.
b. 只要有可能,编写shell脚本来替代C语言程序都不失为一个良好的选择.
- 避免强制性的用户界面:
a. 命令行减少了用户界面的安全隐患.
b. 在运行时,会阻止用户去运行其他命令,这样用户就会成为这些系统的囚徒.
- 让每个程序都称为过滤器:
a. 每个程序可以把数据放到A程序中处理,再放到B程序中处理.
b. 它们只是修改而从不创造数据.
2. 小准则:
- 允许用户定制环境:
a. Unix用户喜欢掌控系统环境,并且是整个环境.
b. 很多Unix应用程序交互会将选择的权利交给用户.
c. 原则是:程序应该只是提供解决问题的机制,而不是为解决问题的方法限定标准.
- 尽量是操作系统内核小而轻量化:
a. 尽管对新功能的追求永无止境,Unix开发人员还是喜欢让操作系统最核心部分保持最小的规模.
- 使用小写字母并尽量简写:
- 沉默是金:
a. 在出现错信息的时,Unix命令喜欢保持沉默.
- 各部分之和大于整体:
a. 小程序集合而成的大型应用程序比单个的大程序更灵活,也更为实用.
b. 两种解决方案可能具备同样的功能,可集合小程序的做法更具有前瞻性.
- 寻求90%的解决方案(2/8定律):
a. 百分百的完成任何事情是很困难的.
b. 完成90%的目标会更有效率,并且更节省成本.