组织大型C ++项目

时间:2011-04-08 03:03:09

标签: c++ code-organization

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

6 个答案:

答案 0 :(得分:11)

如果您要使用C ++构建一个大型项目,至少应该阅读Large Scale C++ Software Design by John Lakos。这有点旧,但听起来你可以从中获益。

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

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

答案 1 :(得分:1)

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

主要应该放开一些东西(可能会做一些管家事情),然后打电话到一个会启动系统其余部分的课程

答案 2 :(得分:1)

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

在这里,我假设你并不是说所有代码都在一个类中,但是只有一个顶级类,所以基本上所有main都会实例化并使用它。反过来,该类可能会实例化并使用其他从属类。

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

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

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

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