在C ++项目中,编译依赖性可能使软件项目难以维护。在模块内和跨模块限制依赖关系的一些最佳实践是什么?
答案 0 :(得分:12)
答案 1 :(得分:6)
Herb Sutter在他的优秀书籍 Exceptional C ++ 中对第26,27和28项“最小化编译时依赖性,第1,2和3部分”中的这个确切主题进行了很好的处理, ISBN:0201615622。
alt text http://ak.buy.com/db_assets/prod_images/489/30611489.jpg
恕我直言,这是最好的C ++编程书之一。
答案 2 :(得分:2)
我认为你需要非常小心和体贴。通常,您可以通过分离代码和使用抽象接口(例如:函数指针或等效对象)来限制依赖关系,但分离通常会增加脆弱性。例如,您可以通过通用抽象接口调用模块以减少对实际对象实现的依赖,但您必须与对象本身同步更新接口,否则代码将在运行时失败。
我认为在具有明确定义的层次结构的模块中构建大型项目非常重要,但在每个模块中,不要过分分散代码以限制依赖性。如果您需要改进维护,则必须平衡减少依赖性并降低代码脆弱性。
答案 3 :(得分:2)