项目中的所有C++代码是否应该封装到一个类中,而main只需调用该类?或者主函数应该声明变量和类。组织大型C++项目
回答
如果你要建立在C++中一个大的项目,你应该至少是读Large Scale C++ Software Design by John Lakos它。这有点旧,但听起来你可以从它的基本原理中受益。
请记住,在任何语言构建大型系统是一个挑战,需要技巧和纪律,以防止它破烂不堪非常快。不要掉以轻心。这就是说,如果你的“大”的定义与我的不同,那么我可能有其他的建议给你。我假设你正在谈论一个项目,在这个项目中,包含单词“代码行”的句子中将会提到“million”这个词。
即使您使用其他语言进行大型项目,您也应该阅读Lakos。 – janm 2011-04-08 04:12:21
对于大型C++项目,您应该创建很多类!
主要应该只是踢东西了(也许做了几个看家的东西),然后调用成一个类,将火起来的系统
没有休息!每个头文件/实现文件对应该代表一个类。将一个大型项目放在一个文件中是灾难性的一种方式:项目变得难以维护,编译将需要很长时间。把你的代码分解成适当大小的块。
主要功能不应该申报类,相反,它包含文件(通常命名为类似的main.cpp,driver.cpp,项目名称的.cpp)应该使用#include指令,以使编译器读取该声明在头文件中。阅读C++的单独编译模型以获取更多信息。
一些初来乍到C++找到编译模型 - 以及错误代码,当你搞砸了产生 - 难以理解或恐吓而放弃想这是不值得的。不要让这是你。了解如何正确组织您的代码。
如果它是一类真正有意义的,肯定的 - 但至少IME,这是一个相当罕见的例外,而不是一般规则。
在这里,我假定你并不是指所有的代码都在一个类中,但是有一个单独的顶级类,所以main
所做的基本上都是实例化并使用它。反过来,这个类可能会实例化并使用其他从属类。
如果你真的意味着“应该所有的代码包含在一个单一的类?”,那么答案几乎肯定是一个响亮的“不”,除了真正的微不足道的项目。如果所有的代码都在一个类中,C++中的大部分类的设计(以及大多数其他OO语言)都是毫无意义的。
是的,我认为他的意思是说,一个叫main的顶级类是调用下级类来做实际工作的“驱动程序”。我可以从来自Java或其他更严格的面向对象的语言的人那里看到这种问题,而不是C++。如果他的意思是第二段,他对“大”的定义确实是有缺陷的。尽管如此,问题并不十分清楚。 – AntonioMO 2011-04-08 04:25:23
如果你可以把你的整个项目中一类没有发神经,你的“大”的定义可能比大多数人的不同在这里。这很好 - 当你问人们关于“大型”C++项目的时候,请记住,他们会认为你正在谈论的事情需要多个人 - 年才能创建。
也就是说,无论项目大小如何,封装的相同原则都适用。把你的逻辑和数据分解成有意义的单位,并且不要太捆绑在一起,然后围绕这些部门组织你的班级。不要害怕尝试一个组织,然后将其重构为另一个组织,如果您发现自己复制粘贴代码,或者如果发现一个组织过于依赖另一个组织。(或者如果你发现自己班级太多,而且你正在创造许多物品来完成一项任务,那么单个物体会更清洁和更容易。)
玩得开心,不要害怕尝试一点点。
如果你把所有东西都放在同一个班上,我猜你会比其他人快得多。 – 2011-04-08 11:21:28
在C++中,你应该避免把整个项目放在一个class
,不管大小。在最大你可以尝试把它放在1或2 namespace
(它可以跨文件分割)。 具有多类的优点,
- 更好维护你的代码的
- 把多的.h和.cpp文件类(即小模块)帮助您快速调试
- 如果所有代码都在一个类中,并且在某个地方进行了更改,然后必须编译整个项目。相反,如果项目跨越模块,则可以编译进行更改的模块。它节省了很多时间。
- 1. 组织大型Django项目的指南
- 2. 组织大型项目,善变
- 3. C++项目组织
- 4. C#单人项目组织
- 5. 组织跨平台的C/C++项目
- 6. 组织JDBC项目
- 7. xcode项目组织
- 8. PHP项目组织
- 9. 组织Gaelyk项目
- 10. TFS项目组织
- 11. .NET项目组织
- 12. ASP.NET项目组织
- 13. 组织VBA项目
- 14. 如何在Intellij Idea中组织一个大型的Java项目
- 15. 关于组织大型Android项目的提示?
- 16. 组织大型ASP.NET MVC2项目中文件的最佳方法?
- 17. 如何使用解决方案/项目/文件夹组织大型项目?
- 18. C项目组织最佳实践
- 19. iOS项目目录组织
- 20. 是否有一个在大型C++项目中组织include/exports的约定?
- 21. 骨干项目组织
- 22. 在TFS中组织项目
- 23. python导入(项目组织)
- 24. Flash AS3 CS4项目组织
- 25. Redmine项目的组织?
- 26. 在QGraphicsScene中组织项目
- 27. 如何组织项目?
- 28. 组织一个saas项目
- 29. Android复杂项目组织
- 30. 目标文件组织c
将整个'大'项目放在一个类中不是封装。这是滥用。你当地的消防部门可能需要和你说一句话。 – corsiKa 2011-04-08 03:07:08