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%的目标会更有效率,并且更节省成本.