如何将一个项目的不同功能分为多个.H和.CPP文件

时间:2020-12-19 19:54:47
c++
本人是个新手
学了大概半个月左右了
之前有php和易语言基础

最近自己写了2-3个c++程序,每个项目就用了3个文件,分别是main.cpp  xxx.h xxx.cpp
由于所有功能都在xxx里面,所以 这个头文件和源文件很大,很乱
但是我看别人的程序,一个不怎么大的项目,里面会有很多头文件和源文件,说实话,我很是佩服,我感觉把所有代码写到一个文件里,会让程序臃肿  反应慢  会带来不少坏处
别人的代码,一个函数里,只有短短的几句代码,而我的,一个函数里,几十行代码
可是我不会写成很多个文件,我也不好分清这个功能要不要单独弄个文件,那个功能要不要单独写出来
感觉真的是很无助啊,c++的书 我也看了好几本,简单的基础也都知道一些了

但是 似乎还是写不出东西
尝试看别人的代码,感觉还是有点吃力
我到底是哪里没有学好呢
感觉那些c++的教程,跟我说了基础的东西,但是没有告诉我具体怎么去开发一个项目,什么情况下  功能要分开到不同的类里,希望各位前辈指点一二

谢谢了

13 个解决方案

#1


>我感觉把所有代码写到一个文件里,会让程序臃肿  反应慢  会带来不少坏处
这是错的。反而还有大项目,写了一个大cpp,include了所有cpp再编译的。当然有了LTCG以后这种做法就没有意义了。但不管怎样臃肿、反应慢,这都是你的错觉。

#2


你的单元测试类呢?
开始写单元测试之后你就知道那些代码需要独立出来测试了。

#3


分解代码一般按功能模块凭感觉来划分,直观的感觉一般是好的,但有时候原始的感觉已经不能分解代码了,这时候优秀的程序员会精确细分模型,创建一些新的概念,这些概念的目的就是更好地管理原代码。

#4


不要为了分而分。写着写着,觉得有必要分出一个文件时再分,几分钟的事。没觉得有必要时,想这些事情白费脑筋。

大文件确实可能使编辑器和编译器反应慢,不过那是非常非常非常大的文件,一般情况不至于。

#5


这个看你工程分层了,头文件目录和应用文件目录,include和src目录,对应存储响应的.h和.cpp文件,各文件包含内容,视项目而定

#6


一般是将不同功能放置在的不同的cpp文件中,尽可能耦合度降低,不过,具体情况还是千变万化的

#7


尺有所短,寸有所长。
分多个.h和.cpp不一定比一个大.h和.cpp好。

#8


将.h, .cpp 按照目录分开时, 方便管理, 方便复用.

将文件按照功能分开, 手工查找时, 会方便很多, 符合自己的思维习惯.

下次的软件任务, 可以将这次的公用代码库包含到新工程中, 加上头文件就可以使用了.
e.g. 工具类, 辅助类都放到Helper中, Helper\file, Helper\string ...

您可以参考Linux的目录组织结构, 结合自己的情况进行剪裁和修正.

例图:
如何将一个项目的不同功能分为多个.H和.CPP文件

#9


碰到一样的问题

#10


我的是这样的a.h对应a.cpp;b.h对应b.cpp,b.cpp里面有有main函数,要调用a里的,在头文件中加入#include "a.h",这样报错 如何将一个项目的不同功能分为多个.H和.CPP文件,请问

#11


我也在纳闷啊!!!!!!!!!!!!

#12


我也在纳闷啊!!!!!!!!!!!!

#13


我也在纳闷啊!!!!!!!!!!!!

#1


>我感觉把所有代码写到一个文件里,会让程序臃肿  反应慢  会带来不少坏处
这是错的。反而还有大项目,写了一个大cpp,include了所有cpp再编译的。当然有了LTCG以后这种做法就没有意义了。但不管怎样臃肿、反应慢,这都是你的错觉。

#2


你的单元测试类呢?
开始写单元测试之后你就知道那些代码需要独立出来测试了。

#3


分解代码一般按功能模块凭感觉来划分,直观的感觉一般是好的,但有时候原始的感觉已经不能分解代码了,这时候优秀的程序员会精确细分模型,创建一些新的概念,这些概念的目的就是更好地管理原代码。

#4


不要为了分而分。写着写着,觉得有必要分出一个文件时再分,几分钟的事。没觉得有必要时,想这些事情白费脑筋。

大文件确实可能使编辑器和编译器反应慢,不过那是非常非常非常大的文件,一般情况不至于。

#5


这个看你工程分层了,头文件目录和应用文件目录,include和src目录,对应存储响应的.h和.cpp文件,各文件包含内容,视项目而定

#6


一般是将不同功能放置在的不同的cpp文件中,尽可能耦合度降低,不过,具体情况还是千变万化的

#7


尺有所短,寸有所长。
分多个.h和.cpp不一定比一个大.h和.cpp好。

#8


将.h, .cpp 按照目录分开时, 方便管理, 方便复用.

将文件按照功能分开, 手工查找时, 会方便很多, 符合自己的思维习惯.

下次的软件任务, 可以将这次的公用代码库包含到新工程中, 加上头文件就可以使用了.
e.g. 工具类, 辅助类都放到Helper中, Helper\file, Helper\string ...

您可以参考Linux的目录组织结构, 结合自己的情况进行剪裁和修正.

例图:
如何将一个项目的不同功能分为多个.H和.CPP文件

#9


碰到一样的问题

#10


我的是这样的a.h对应a.cpp;b.h对应b.cpp,b.cpp里面有有main函数,要调用a里的,在头文件中加入#include "a.h",这样报错 如何将一个项目的不同功能分为多个.H和.CPP文件,请问

#11


我也在纳闷啊!!!!!!!!!!!!

#12


我也在纳闷啊!!!!!!!!!!!!

#13


我也在纳闷啊!!!!!!!!!!!!