Unix哲学:实用理念与技术智慧
1. 组件组合优于整体
在木工行业,羊角锤的历史几乎和钉子的使用历史一样长。它集钉钉子和拔钉子两种功能于一个木柄之上,基本设计理念历经时间考验。然而如今,新技术正挑战着羊角锤的地位。钉枪在钉钉子方面远超羊角锤,速度更快且更精准,能让工人在短时间内完成房屋建造。不过,羊角锤的爪端功能依旧稳固,高科技似乎难以完全替代它作为通用撬棒的作用。
软件领域也存在类似现象。有些软件像羊角锤一样,将多种功能整合在一起,以完成特定任务。但很多这类集成应用是大型的单体程序,虽然能完成工作,但包含了普通用户难以理解和使用的功能,给用户和系统带来负担。
Unix构建集成应用的方式则不同,它由一系列小组件组成应用。这样,用户只需加载和使用所需功能,还能灵活修改应用的部分内容,而无需替换整个应用。
以应用A和应用B为例,二者功能相同,但应用B是大型单体程序,应用A由多个小程序组成,每个小程序提供应用B的部分功能。当需要全部四个功能时,二者差异不大。但如果只需功能一和二,使用应用B会带来多余的开销,而应用A则可轻松组合这两个功能来构建新应用。若要包含功能二、三、五,应用A只需创建具有功能五的模块并舍弃功能一和四;应用B则需要开发者进行复杂的修改。
此外,应用B不支持功能间使用管道,而应用A可能会大量依赖管道。这消除了功能改变时重新链接整个应用的必要性,加快了开发和测试速度,因为维护应用A的程序员可以处理更易管理的小组件。应用A还便于多个开发者并行工作,能减少“面条代码”。用户与应用A的组件交互可通过集成一个单独的用户界面模块实现,就像X Window System,用户可按需选择用户界面。
超级会员免费看
订阅专栏 解锁全文
18

被折叠的 条评论
为什么被折叠?



