当前位置:  开发笔记 > 编程语言 > 正文

我应该把很多功能放到一个文件中吗?或者,或多或少,每个文件一个函数?

如何解决《我应该把很多功能放到一个文件中吗?或者,或多或少,每个文件一个函数?》经验,为你挑选了2个好方法。

我喜欢组织我的代码,所以理想情况下我想要每个文件一个类,或者当我有非成员函数时,每个文件需要一个函数.

原因是:

    当我阅读代码时,我将始终知道在哪个文件中我应该找到某个函数或类.

    如果它是每个头文件的一个类或一个非成员函数,那么当我include成为头文件时,我不会包含整个混乱 .

    如果我在函数中做了一些小改动,那么只需要重新编译该函数.

但是,将所有内容拆分为许多标头和许多实现文件都会使编译速度变慢.在我的项目中,大多数函数访问一定数量的模板化其他库函数.因此代码将反复编译,每个实现文件一次.编译我的整个项目目前在一台机器上需要45分钟左右.大约有50个目标文件,每个目标文件使用相同的昂贵编译头.

也许,每个文件有一个类(或非成员函数)是可接受的,但是将许多或所有这些函数的实现放在一个实现文件中,如下例所示?

// foo.h
void foo(int n);

// bar.h
void bar(double d);

// foobar.cpp
#include 
void foo(int n) { std::vector v; ... }
void bar(double d) { std::vector w; ... }

同样,优点是我可以只包含foo函数或只包含bar函数,整个项目的编译速度会更快,因为foobar.cpp一个文件,所以std::vector(这只是其他一些昂贵的例子)编译模板化构造)必须只编译一次,而不是两次编译a foo.cppbar.cpp单独编译.当然,我上面的原因(3)对于这种情况是无效的:刚刚改变foo(){...}之后我必须重新编译整个可能很大的文件foobar.cpp.

我很好奇你的意见是什么!



1> Mr Fooz..:

恕我直言,您应该将项目组合成逻辑分组并基于此创建文件.

当我在编写函数时,通常会有六个左右的函数彼此紧密相关.我倾向于将它们放在一个标题和实现文件中.

当我编写类时,我通常将自己限制为每个头和实现文件的一个重量级类.我可能会添加一些便利函数或小辅助类.

如果我发现一个实现文件长达数千行,那通常表明那里存在太多,我需要将其分解.



2> dreamlax..:

在我看来,每个文件的一个功能可能会变得混乱.想象一下,如果POSIX和ANSI C标头以相同的方式制作.

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

每个文件一个类是个好主意.


对我来说听起来很棒,再也不用查找函数的标题了...但是它们也可以有包含string.h中所有字符串函数的便捷标题,依此类推.另一方面,如果使用strlen,编译器可以做出包含"strlen.h"的假设(当然有警告)
推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有