我是一名使用 C++ 进行面向对象编程的学生,我正在慢慢学习新事物。
作为我类(class)学期报告的一部分,我被要求发表声明:
“使用编程模板开发大型系统是否合理?”
我得到以下文章来研究大型软件系统的软件架构:
http://www.crystalclearsoftware.com/publications/2001/RepresentingLargeScaleArchitecture.pdf
但是在阅读之后,我无法决定在开发此类系统时是否应该采用模板,或者应该避免使用模板。
我熟悉使用模板的基本概念以及运行时和编译时场景,但对于较大的系统,使用模板是否有任何复杂性或使用模板在大型系统的开发中是否安全航行?
请以任何一种方式强调是否应使用模板来废除的原因。
答案是确定的。说真的,这取决于
模板被用于。模板的成本很高
增加了复杂性和耦合性。备选方案也可能有
然而,显着的成本——当替代品的成本是
比模板的成本高,那你就用模板。 (这是
当然,无论应用程序的大小如何,都是如此。但是事情
比如增加的复杂性和耦合往往会对
大型项目。)
在解决这个问题之前,你必须区分使用
模板和定义模板。肯定没有争论
反对使用标准库中定义的模板,例如:
任何额外的费用都由库的开发者支付,而不是
你,所以这都是好处。类似的论点适用于第三方
图书馆。但是,对于您自己定义的模板,您必须
考虑模板定义中修改的影响
在构建时间。为几乎所有事物定义模板不是
一个好主意。另一方面,您也许可以隔离某些
功能,并像对待第三方一样对待它们
内部开发的库,但除极端情况外不进行修改。
有趣的是,模板不会导致问题(低级别,
非常稳定的元素)通常是它们最有用的地方。为了
“应用层”模块,处理实际的
应用程序特定代码,模板通常不是很有用;
继承更有用。对于低级组件,沿着
另一方面,std::vector
行,它们非常有用;
但这些组件通常是独立于其他组件开发的
无论如何,应用程序必须非常稳定。