繁体   English   中英

组织大型C ++项目

[英]Organizing large C++ project

是否应该将项目中的所有C ++代码封装到一个类中,而main只是调用该类? 或者主函数应该声明变量和类。

如果您打算用C ++构建一个大型项目,至少应该阅读John Lakos关于它的大规模C ++软件设计 这有点旧,但听起来你可以从中获益。

请记住,以任何语言构建大型系统都是一项挑战,需要技巧和纪律,以防止它迅速崩溃。 不要掉以轻心。

也就是说,如果您对“大”的定义与我的不同,那么我可能会有其他建议给您。 我假设您正在谈论一个项目,其中将在包含“代码行”字样的句子中提及“百万”这个词。

对于大型C ++项目,您应该创建许多类!

主要应该开始(可能做一些管家事情),然后调用一个类,将启动系统的其余部分

如果它是一个真正有意义的类,当然 - 但至少是IME,这是一个相当罕见的例外,而不是一般规则。

在这里,我假设您并不是真的意味着所有代码都在一个类中,但是只有一个顶级类,所以main做的就是实例化并使用它。 反过来,该类可能会实例化并使用其他从属类。

如果你的意思是“如果所有代码都包含在一个类中?”,那么答案几乎肯定是响亮的“不”,除了真正微不足道的项目。 如果所有代码都在一个类中,那么C ++(以及大多数其他OO语言)中的大部分类设计都是毫无意义的。

如果你可以将整个项目放在一个班级而不会疯狂,那么你对“大”的定义可能与大多数人不同。 哪个好 - 只要记住当你向人们询问一个“大型”c ++项目时,他们会假设你在谈论需要多个人年创建的东西。

也就是说,无论项目规模如何,相同的封装原则都适用。 将您的逻辑和数据分解为有意义且不太紧密的单元,然后围绕这些部门组织您的类。 如果您发现自己复制粘贴代码,或者如果您发现某个类过于依赖另一个类,请不要害怕尝试一个组织然后将其重构到另一个组织中。 (或者,如果您发现自己有太多的类,并且您正在创建许多对象来完成一个任务,其中单个对象将更清晰,更容易。)

玩得开心,不要害怕尝试一点。

在C ++中,您应该避免将整个项目放在一个class ,无论大小。 在最大值,您可以尝试将其放在1或2 namespace (可以在文件中拆分)。 拥有多个类的优点是,

  1. 更好的代码可维护性
  2. 将类放在多个.h和.cpp文件(即小模块)中可以帮助您快速调试
  3. 如果所有代码都在一个类中并且在某处进行了更改,则必须编译整个项目。 相反,如果项目跨模块,则可以编译进行更改的模块。 节省了很多时间

没有! 每个头/实现文件对应代表一个类。 将大型项目放在一个文件中是一种可靠的灾难方式:项目变得无法维护,编译将需要很长时间。 将代码分解为适当大小的部分。

main函数不应该声明类,而是它包含的文件(通常命名为main.cpp,driver.cpp, projectname .cpp)应该使用#include指令使编译器读取头文件中的声明。 阅读C ++的独立编译模型以获取更多信息。

C ++的一些新手找到了编译模型 - 以及当你搞砸它时产生的错误代码 - 难以理解或恐吓,并放弃认为它不值得。 不要让这个成为你。 了解如何正确组织代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM