UNIX哲学

虽然不管在哪种平台上用C语言编程在很多方面都是一样的,但UNIX和Linux开发者对编程和系统开发确实有其独特的观点。

Reference

  • 摘自《Linux程序设计 第4版》

简单性

许多很有用的UNIX工具是非常简单的,因此也是很小并易于理解的。“小而简单”(KISS:Keep It Small and Simple)是一种值得学习的技术。越大、越复杂的系统注定包含越大、越复杂的错误,而调试是我们所有人都想避免的苦差事。

集中性

通常,让一个程序很好的执行一项任务要好过把所有功能都乱七八糟的堆在一起。功能能臃肿的程序难于使用和维护 ,只有单一目标的程序更容易随着更好的算法或界面被开发出来而得到改进。在UNIX中,当用户出现新的需求时,我们通常是把小工具据组合起来以完成更复杂的任务,而不是试图将一个个用户期望的所有功能放在一个大程序里。

可重用组件

将应用程序的核心实现为库。具有简单而灵活的编程接口、文档齐备的库可以帮助其他人开发出同类程序,或者吧这些技术应用到新的应用领域。dbm库就是一个例子,它是一组可重用的函数,而不是单一的数据库管理程序。

过滤器

许多UNIX应用程序可用作过滤器。也就是说,他们对输入进行转换并产生输出。正如你将在后面看到的,UNIX提供了一些机制,让我们可以把一些UNIX程序通过一种新颖的方式组合起来,以开发出相当复杂的应用程序。当然,这种类型的重用是靠我们前面提到的开发方法支撑的。

开放的文件格式

比较成功并流行的UNIX程序都使用纯ASCII码的文本文件或XML文件作为配置文件和数据文件。如果你在开发程序时采用了任一种做法,那你做对了!它使用户可以用标准工具来修改和搜索配置项,并且可以开发出新工具在数据文件上执行新的功能。ctags源代码交叉引用系统就是一个好例子,他把符号位置信息以适合于搜索程序使用的正则表达式的形式记录下来。

灵活性

你不能期待用户都能非常正确的使用你的程序。所以,你在编程时应尽量考虑到灵活性,尽量避免随意限制字段长度或记录数目。如果你能做到的话,则你编写的网络程序既能在单机上运行,也能跨网络运行。永远不要认为你知道用户想做的一切事。

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……