Unix哲学
摘选自《Linux程序设计(第三版)》
许多很有用的Unix工具是非常简单的,因此也是很小并易于理解的。“小而简单”是值得学习的,更大、更复杂的系统注定包 含更大、更复杂的bug,而调试是所有人都想避免的。
通常,让一个程序很好地执行一项任务要好过把所有的功能都乱七八糟地堆在一起。功能肿胀的程序难于使用和维护。单一目标的程序更容易随着更好的算法或界面被开发出来而得到改进。在UNIX中,当用户出现新的需求时,通常是把小工具组合起来已完成更复杂的任务,而不是试图将一个用户可能期望的所有功能放在一个大程序里。
将应用程序的核心实现为库。具有简单而灵活的编程接口、文档齐备的库可以帮助其他人开发出同类程序,或者把这些技术应用到新的应用领域。
许多Unix程序可用作过滤器。也就是说,它们对输入进行转换并产生输出 。正如我们将在后面看到的,Unix提供了一些机制,让我们可以把一些Unix程序通过一种新颖的方式组合起来,以开发出相当复杂的应用程序。当然,这种类型的作用是靠前面提到的开发方法支撑的。
比较成功并流行的Unix程序都使用纯ASCII码的文本文件作为配置文件和数据文件。如果你在开发程序时采用了这种做法,那你就对了!它使用户可以用标准工具修改和搜索配置项,并且可以开发出在数据文件上执行新功能的新工具。
你不能期待用户都能正确地使用你的程序。所以,在编程时要尽量考虑到程序的灵活性;尽量避免对字段长度或记录数目作人为地限制。如果你能做到的话,则你编写的程序既能在单机上运行,也能跨网路运行。永远不要认为你知道用户想做的一切事。