[英]Organizing large C++ project
是否应该将项目中的所有C ++代码封装到一个类中,而main只是调用该类? 或者主函数应该声明变量和类。
如果您打算用C ++构建一个大型项目,至少应该阅读John Lakos关于它的大规模C ++软件设计 。 这有点旧,但听起来你可以从中获益。
请记住,以任何语言构建大型系统都是一项挑战,需要技巧和纪律,以防止它迅速崩溃。 不要掉以轻心。
也就是说,如果您对“大”的定义与我的不同,那么我可能会有其他建议给您。 我假设您正在谈论一个项目,其中将在包含“代码行”字样的句子中提及“百万”这个词。
对于大型C ++项目,您应该创建许多类!
主要应该开始(可能做一些管家事情),然后调用一个类,将启动系统的其余部分
如果它是一个真正有意义的类,当然 - 但至少是IME,这是一个相当罕见的例外,而不是一般规则。
在这里,我假设您并不是真的意味着所有代码都在一个类中,但是只有一个顶级类,所以main
做的就是实例化并使用它。 反过来,该类可能会实例化并使用其他从属类。
如果你的意思是“如果所有代码都包含在一个类中?”,那么答案几乎肯定是响亮的“不”,除了真正微不足道的项目。 如果所有代码都在一个类中,那么C ++(以及大多数其他OO语言)中的大部分类设计都是毫无意义的。
如果你可以将整个项目放在一个班级而不会疯狂,那么你对“大”的定义可能与大多数人不同。 哪个好 - 只要记住当你向人们询问一个“大型”c ++项目时,他们会假设你在谈论需要多个人年创建的东西。
也就是说,无论项目规模如何,相同的封装原则都适用。 将您的逻辑和数据分解为有意义且不太紧密的单元,然后围绕这些部门组织您的类。 如果您发现自己复制粘贴代码,或者如果您发现某个类过于依赖另一个类,请不要害怕尝试一个组织然后将其重构到另一个组织中。 (或者,如果您发现自己有太多的类,并且您正在创建许多对象来完成一个任务,其中单个对象将更清晰,更容易。)
玩得开心,不要害怕尝试一点。
在C ++中,您应该避免将整个项目放在一个class
,无论大小。 在最大值,您可以尝试将其放在1或2 namespace
(可以在文件中拆分)。 拥有多个类的优点是,
没有! 每个头/实现文件对应代表一个类。 将大型项目放在一个文件中是一种可靠的灾难方式:项目变得无法维护,编译将需要很长时间。 将代码分解为适当大小的部分。
main函数不应该声明类,而是它包含的文件(通常命名为main.cpp,driver.cpp, projectname .cpp)应该使用#include指令使编译器读取头文件中的声明。 阅读C ++的独立编译模型以获取更多信息。
C ++的一些新手找到了编译模型 - 以及当你搞砸它时产生的错误代码 - 难以理解或恐吓,并放弃认为它不值得。 不要让这个成为你。 了解如何正确组织代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.