C++单函数变量放置
C++ single-function variable placement
我正在写一个 class 从文件中读取数据。该项目仍在开发中,稍后我可能会更改文件名或路径,因此我将其存储在 std::string 中以加快编辑速度。
鉴于文件名将在一个函数中多次使用,但只会在一个函数中使用,是否有关于在哪里的规范cpp规则我应该定义变量吗?
//don't know where I'll define this
std::string file_name = "path/to/file.foo";
//a.h file
class A {
public:
void fileFunc();
private:
//do i define it here?
};
//a.cpp file
A::fileFunc() {
//or do i define it here?
std::ifstream in(file_name);
if(in) {
//do things
}
else {
std::cerr << "couldn't open " << file_name;
}
}
保留所有信息以供其使用。
这将有助于提高可读性和性能。参见:https://en.wikipedia.org/wiki/Locality_of_reference
所以
A::fileFunc() {
const std::string file_name = "path/to/file.foo"; // pls use const when you can
...
或
A::fileFunc(const std::string& file_name) {
...
顺便说一句,我认为这应该在 https://codereview.stackexchange.com/ 上,而不是在 Whosebug 上。
我正在写一个 class 从文件中读取数据。该项目仍在开发中,稍后我可能会更改文件名或路径,因此我将其存储在 std::string 中以加快编辑速度。
鉴于文件名将在一个函数中多次使用,但只会在一个函数中使用,是否有关于在哪里的规范cpp规则我应该定义变量吗?
//don't know where I'll define this
std::string file_name = "path/to/file.foo";
//a.h file
class A {
public:
void fileFunc();
private:
//do i define it here?
};
//a.cpp file
A::fileFunc() {
//or do i define it here?
std::ifstream in(file_name);
if(in) {
//do things
}
else {
std::cerr << "couldn't open " << file_name;
}
}
保留所有信息以供其使用。
这将有助于提高可读性和性能。参见:https://en.wikipedia.org/wiki/Locality_of_reference
所以
A::fileFunc() {
const std::string file_name = "path/to/file.foo"; // pls use const when you can
...
或
A::fileFunc(const std::string& file_name) {
...
顺便说一句,我认为这应该在 https://codereview.stackexchange.com/ 上,而不是在 Whosebug 上。