- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我喜欢组织我的代码,所以理想情况下我希望每个文件一个类,或者当我有非成员函数时,每个文件一个函数。
原因是:
当我阅读代码时,我将始终知道我应该在哪个文件中找到某些功能或类。
如果是一个类(class)或者一个非成员(member)每个头文件的函数,那么我不会包括一团糟,当我 include
头文件。
如果我对一个函数做了一个小改动,那么只有那个函数需要重新编译。
但是,将所有内容拆分成许多头文件和许多实现文件会大大减慢编译速度。在我的项目中,大多数函数访问一定数量的模板化其他库函数。这样代码将被一遍又一遍地编译,每个实现文件一次。目前在一台机器上编译我的整个项目需要 45 分钟左右。大约有 50 个目标文件,每个文件都使用相同的编译昂贵的 header 。
也许,每个 header 文件有一个类(或非成员函数)是可以接受的,但是将许多或所有这些函数的实现放在一个中实现文件,就像下面的例子一样?
// foo.h
void foo(int n);
// bar.h
void bar(double d);
// foobar.cpp
#include <vector>
void foo(int n) { std::vector<int> v; ... }
void bar(double d) { std::vector<int> w; ... }
同样,优点是我可以只包含 foo 函数或只包含 bar 函数,整个项目的编译会更快,因为 foobar.cpp
是一个文件,所以std::vector<int>
(这只是其他一些编译成本高的模板化构造的示例)必须只编译一次,而不是编译 foo.cpp
时的两次。和 bar.cpp
分别地。当然,我上面的理由 (3) 不适用于这种情况:在更改 foo(){...} 之后,我必须重新编译整个可能很大的文件 foobar.cpp
.
我很好奇你的意见是什么!
最佳答案
恕我直言,您应该将项目组合成逻辑分组并基于此创建文件。
当我编写函数时,通常有六个左右彼此紧密相关的函数。我倾向于将它们放在一个头文件和实现文件中。
当我编写类时,我通常将每个头文件和实现文件限制为一个重量级类。我可能会添加一些方便的函数或微型辅助类。
如果我发现一个实现文件有几千行那么长,这通常表明那里有太多的东西,我需要把它分解。
关于c++ - 我应该将许多功能放在一个文件中吗?或者,或多或少,每个文件一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531133/
我喜欢组织我的代码,所以理想情况下我希望每个文件一个类,或者当我有非成员函数时,每个文件一个函数。 原因是: 当我阅读代码时,我将始终知道我应该在哪个文件中找到某些功能或类。 如果是一个类(class
我需要一个 Bash(或一个普通的 shell)脚本来放入一个每分钟检查 Internet 是否正常的 cronjob。 我是这样做的: #! /bin/sh host1=google.com hos
h = fspecial('average', filterSize); imageData = imfilter(imageData, h, 'replicate'); 在我的 matlab 代码
我是一名优秀的程序员,十分优秀!