众所周知,解决代码耦合问题的核心原则之一是信息隐藏。即把所有客户不需要关心的信息尽力隐藏起来,只暴露出仅需要被依赖的东西。这样做不仅可以控制变化...
符号隐藏与依赖管理是软件工程中关乎效率的关键能力。它的核心是“每个软件模块如何在隐藏好自己的同时,还能低成本的精准获取依赖”。做好了这件事,每个...
一个项目中,除了非常底层的软件模块外,大多数模块都需要其它的模块的协助才能完成功能,这需要借助模块之间的依赖管理能力。 依赖管理包含如何控制模块...
前文谈了代码和库的符号隐藏手段。在C/C++中,无论我们如何对符号进行隐藏,最后该暴露给客户的API还是要声明到头文件中发布给别人使用。如何设计...
当程序规模变大之后,人们会对软件进行模块划分,以便分而治之。有了模块之后,就可以将其构建成库(静态库或者动态库)发布给别人使用。 前文所述的符号...
C语言中全局变量和函数的符号是默认外部可访问的。 只要我们知道一个全局变量或者函数的声明,我们就可以在当前的编译单元中直接使用它,即使它定义在另...
由于工作原因,常常会在各种编程语言技术栈下切换。每次切回到C/C++技术栈下,都会为C/C++语言缺乏一个好用的包管理器而不适应好一阵。 包管理...
上一篇中我们谈到在软件开发中使用演进式设计来让软件持续的响应变化。 演进式设计强调对不确定的变化不做提前预估,优先保持设计的“简单性”,避免过度...
上世纪60年代后,由于“软件危机”的推动,人们开始借助工程化的方式解决软件开发中质量、成本和工期不可控的问题,形成了软件工程学。 软件工程学从其...