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 上。