我只是有一些关于保持代码清洁和可读性的一般性问题。
1)函数是否应该与main(原型和初始化)具有单独的文件? (功能很长)
2)如果函数确实有单独的文件,在Main中我是否包含函数原型或函数初始化?
3)主要的全局变量是否在项目的所有文件中共享?如果没有,我将如何使变量可以被所有文件访问?
4)如果我包含函数,当我使用#include
时,我是否将函数文件名保存在<>
或""
中?我什么时候才能使用每一个?
5)包含功能时,我是否只包括其名称或完整地址? (我正在使用代码块)。例如,如果我包含一个名为calculate.hpp的函数文件,我会#include "calculate.hpp"
还是#include "Users\Me\My Documents\calculate.hpp"
?
答案 0 :(得分:1)
很多问题!
1)函数是否应该与main(原型和初始化)具有单独的文件? (功能很长)
简单地说:
如果“功能很长”,请考虑如何缩短它们。由于您要求保持代码清洁,我建议Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin,详细讨论这个问题。
2)如果函数确实有单独的文件,在Main中我是否包含函数原型或函数初始化?
您应该只#include
个头文件。
3)主要的全局变量是否在项目的所有文件中共享?如果没有,我将如何使变量可以被所有文件访问?
全局变量应该是例外而不是规则。但是,请参阅我之前关于声明和定义的观点。
4)如果我包含函数,当我使用#include时,我将函数文件名保存在&lt;&gt;中要么 ””?我什么时候才能使用每一个?
你是#include
- 整个文件,而不仅仅是一个函数。
<>
用于系统范围的标头,例如标准库中的标头""
表示本地标题,例如您自己的calculate.hpp
。5)包含功能时,我是否只包括其名称或完整地址? (我正在使用代码块)。例如,如果我包含一个名为calculate.hpp的函数文件,我会#include“calculate.hpp”或#include“Users \ Me \ My Documents \ calculate.hpp”吗?
使用相对路径(必要时使用正斜杠),绝不使用绝对路径。考虑当其他人试图构建您的代码时会发生什么。
我建议在SourceForge或GitHub上查看一些开源C ++项目,看看它们是如何布局的。
答案 1 :(得分:1)
编译器应该看到当前翻译单元中标识符的声明。话虽如此,因为它是C ++,让我们考虑一下成员函数。
extern
指定变量的外部链接。<>
中。如果您有一个用户定义的标题,那么它将包含在""
中。 答案 2 :(得分:0)
取决于具体细节。
为每组功能创建一个头文件。所有依赖模块中的#include
加上实现模块。
全局变量可供任何了解它们的模块使用。通常,它们将在与extern
相同的模块头文件中声明。
将#include <file.h>
用于标准库文件。对所有其他人使用#include "file.h"
。在大多数情况下,建议不要提供路径:使用-I
编译器命令行选项列出包含目录。这有助于构建控制和管理不同的编译环境。
首先,永远不要在路径中使用反斜杠。始终使用正斜杠。甚至在Windows上。其余的请参见#4。