2011-04-08 117 views
3

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

+9

将整个'大'项目放在一个类中不是封装。这是滥用。你当地的消防部门可能需要和你说一句话。 – corsiKa 2011-04-08 03:07:08

回答

10

如果你要建立在C++中一个大的项目,你应该至少是读Large Scale C++ Software Design by John Lakos它。这有点旧,但听起来你可以从它的基本原理中受益。

请记住,在任何语言构建大型系统是一个挑战,需要技巧和纪律,以防止它破烂不堪非常快。不要掉以轻心。这就是说,如果你的“大”的定义与我的不同,那么我可能有其他的建议给你。我假设你正在谈论一个项目,在这个项目中,包含单词“代码行”的句子中将会提到“million”这个词。

+1

即使您使用其他语言进行大型项目,您也应该阅读Lakos。 – janm 2011-04-08 04:12:21

0

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

主要应该只是踢东西了(也许做了几个看家的东西),然后调用成一个类,将火起来的系统

0

没有休息!每个头文件/实现文件对应该代表一个类。将一个大型项目放在一个文件中是灾难性的一种方式:项目变得难以维护,编译将需要很长时间。把你的代码分解成适当大小的块。

主要功能不应该申报类,相反,它包含文件(通常命名为类似的main.cpp,driver.cpp,项目名称的.cpp)应该使用#include指令,以使编译器读取该声明在头文件中。阅读C++的单独编译模型以获取更多信息。

一些初来乍到C++找到编译模型 - 以及错误代码,当你搞砸了产生 - 难以理解或恐吓而放弃想这是不值得的。不要让这是你。了解如何正确组织您的代码。

1

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

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

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

+0

是的,我认为他的意思是说,一个叫main的顶级类是调用下级类来做实际工作的“驱动程序”。我可以从来自Java或其他更严格的面向对象的语言的人那里看到这种问题,而不是C++。如果他的意思是第二段,他对“大”的定义确实是有缺陷的。尽管如此,问题并不十分清楚。 – AntonioMO 2011-04-08 04:25:23

1

如果你可以把你的整个项目中一类没有发神经,你的“大”的定义可能比大多数人的不同在这里。这很好 - 当你问人们关于“大型”C++项目的时候,请记住,他们会认为你正在谈论的事情需要多个人 - 年才能创建。

也就是说,无论项目大小如何,封装的相同原则都适用。把你的逻辑和数据分解成有意义的单位,并且不要太捆绑在一起,然后围绕这些部门组织你的班级。不要害怕尝试一个组织,然后将其重构为另一个组织,如果您发现自己复制粘贴代码,或者如果发现一个组织过于依赖另一个组织。(或者如果你发现自己班级太多,而且你正在创造许多物品来完成一项任务,那么单个物体会更清洁和更容易。)

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

+0

如果你把所有东西都放在同一个班上,我猜你会比其他人快得多。 – 2011-04-08 11:21:28

0

在C++中,你应该避免把整个项目放在一个class,不管大小。在最大你可以尝试把它放在1或2 namespace(它可以跨文件分割)。 具有多类的优点,

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