使用大型系统的编程模板 我是一个C++的面向对象编程的学生,慢慢地我学到了新东西。 作为我课程学期报告的一部分,我被要求就以下声明发言:
“使用编程模板开发大型系统是否合理?” 下面的文章是关于大型软件系统的软件体系结构的研究: 但是在阅读之后,我无法决定在开发这样的系统时是应该采用模板,还是应该避免使用模板 我熟悉使用模板的基本概念、运行时和编译时场景,但对于较大的系统,使用模板是否有任何复杂性,或者在开发大型系统时使用模板是否安全使用大型系统的编程模板 我是一个C++的面向对象编程的学生,慢慢地我学到了新东西。 作为我课程学期报告的一部分,我被要求就以下声明发言:,c++,templates,C++,Templates,“使用编程模板开发大型系统是否合理?” 下面的文章是关于大型软件系统的软件体系结构的研究: 但是在阅读之后,我无法决定在开发这样的系统时是应该采用模板,还是应该避免使用模板 我熟悉使用模板的基本概念、运行时和编译时场景,但对于较大的系统,使用模板是否有任何复杂性,或者在开发大型系统时使用模板是否安全 请以任何一种方式强调是否应使用模板来消除的原因 我不会告诉你答案,但我会给你这个提示 问问你自己: 使用模板的主要原因是什么?不使用模板(如编译时)的主要原因是什么 然后问问自己,为什么这些原因中
请以任何一种方式强调是否应使用模板来消除的原因 我不会告诉你答案,但我会给你这个提示 问问你自己: 使用模板的主要原因是什么?不使用模板(如编译时)的主要原因是什么 然后问问自己,为什么这些原因中的任何一个在大规模系统中是有用的还是有害的 让我们看看大规模系统。是什么让它们变大的?它可以是很多东西,例如:
- 代码量
- 用户数
- 部署规模
- 地理
- 开发成本
- 维修费用 等等
现在考虑模板对
有好处的一些事情。- 算法的可恢复性和组件化
- 代码量:良好的可恢复性将有助于减少需要维护的代码量
- 开发成本:可恢复性也将有助于这一点,因为开发的工作量较少,但如果开发人员需要更熟练的技能,它可能会增加成本。所以这里有一把双刃剑
- 维护成本:可恢复性将有助于减少测试和维护
答案没有对错之分,而是每个系统的设计将根据所讨论系统的实际关注点进行分析和决定的论点。我不会告诉你答案,但我会给你这个提示 问问你自己: 使用模板的主要原因是什么?不使用模板(如编译时)的主要原因是什么 然后问问自己,为什么这些原因中的任何一个在大规模系统中是有用的还是有害的 让我们看看大规模系统。是什么让它们变大的?它可以是很多东西,例如:
- 代码量
- 用户数
- 部署规模
- 地理
- 开发成本
- 维修费用 等等
现在考虑模板对
有好处的一些事情。- 算法的可恢复性和组件化
- 代码量:良好的可恢复性将有助于减少需要维护的代码量
- 开发成本:可恢复性也将有助于这一点,因为开发的工作量较少,但如果开发人员需要更熟练的技能,它可能会增加成本。所以这里有一把双刃剑
- 维护成本:可恢复性将有助于减少测试和维护
答案没有对错之分,而是每个系统的设计将根据所讨论系统的实际问题进行分析和决定的论点。答案是一个确定的答案。说真的,这取决于 模板正在用于。模板在这方面有很大的成本 增加了复杂性和耦合性。这些替代方案也可能会产生影响 但是,当替代方案的成本较低时,成本较高 高于模板的成本,则使用模板。(这是 当然,不管应用程序的大小,都是正确的 类似的,增加的复杂性和耦合往往会对系统产生更大的影响 大型项目。) 在回答问题之前,您必须区分使用 模板,以及定义模板。当然没有争论 禁止使用标准库中定义的模板,例如: 任何额外的费用都是由图书馆的开发者支付的,而不是由 你,所以这都是好处。类似的论点也适用于第三方 图书馆。但是,对于您自己定义的模板,您必须 考虑模板定义中修改的影响 关于构建时间。为几乎所有内容定义模板是而不是 好主意。另一方面,您可能能够隔离某些 功能,并像对待第三方一样对待它们 图书馆,内部开发,但除极端情况外未修改 有趣的是,如果模板不会引起问题(低级别, 非常稳定的元素)通常是它们最有用的地方。对于 “应用程序级”模块,用于处理实际 特定于应用程序的代码、模板通常不会太有用; 继承要有用得多。对于低级别组件,沿 另一方面,std::vector的行非常有用; 但这些组件通常是独立于其他组件开发的
对于应用程序,必须非常稳定。答案是确定的。说真的,这取决于 模板正在用于。模板在这方面有很大的成本 增加了复杂性和耦合性。这些替代方案也可能会产生影响 但是,当替代方案的成本较低时,成本较高 高于模板的成本,则使用模板。(本