UNIX程序编程有自己特定的风格,我们在学习UNIX程序设计的时候,应该尽量遵从这种设计风格,它能够最大限度地帮助我们避免一些问题。
- 简单化
许多有用并且好用的UNIX系统软件都非常简单,而且很小并易于理解。“小而简单”是一个值得学习的技术。越大、越复杂的系统就注定会包含越大、越复杂的错误,对于我们调试来说,是一件非常痛苦的事情。
- 集中性
让程序执行一个任务通常要比将所有功能串联在一起要好很多。臃肿的程序一般很难进行维护与使用,比起单一功能的程序来说,修改该程序的某一个功能很容易引发其他错误,并且影响其他功能的使用。在UNIX程序中,当用户出现新的需求的时候,我们通常将各种小工具组合在一起来实现一个更加复杂的任务,而不是试图将用户的需求放在一个程序中完成。
- 可重用组件
将应用程序的核心实现为库。具有简单而灵活的编程接口、文档齐备的库可以帮助其他人开发出同类程序,或者把这些技术应用到新的应用领域。dbm库就是一个例子,它是一组可重用的函数,而不是单一的数据库管理程序。
- 过滤器
许多UNIX应用程序可用作过滤器。也就是说,他们对输入进行转换并产生输出。正如你将在后面看到的,UNIX提供了一些机制,让我们可以把一些UNIX程序通过一种新颖的方式组合起来,以开发出相当复杂的应用程序。当然,这种类型的重用是靠我们前面提到的开发方法支撑的。
- 开放的文件格式
比较成功并流行的UNIX程序都是用纯ASCII码的文本文件或XML文件作为配置文件和数据文件。如果你在开发程序时采用了任一种做法,那你做对了!它使用户可以可以用标准工具来修改和搜索配置项,并且可以开发出新工具在数据文件上执行新的功能。ctags源代码交叉引用系统就是一个好例子,他把符号位置信息以适合于搜索程序使用的正则表达式的形式记录下来。
- 灵活性
你不能期待用户都能非常正确地使用你的程序。所以,你在编程时应尽量考虑到灵活性,尽量避免随意限制字段长度或记录数目。如果你能做到的话,则你编写的网络程序既能在单机上运行,也能跨网络运行。永远不要认为你知道用户想做的一切事。
原文地址:http://blog.51cto.com/13813797/2141893