c - 重用变量是好是坏?

标签 c variables

我想知道如果我尽可能地重用变量名是好是坏(或者无关紧要)?例如

int main(void){
  //...
  int x=0;

  //..
  x = atoi(char_var);

  //..

  for (x=0; x<12; x++){
   //...
  }

  //..
  x = socket(...)
  if(x<0){
  //...
  }

  for(x=0;x<100;x++{
  //...
  }

  return 0;
}

可以使用其他变量代替上面的 x(可能更利于可读性),但我想知道它是否会为我提供二进制大小、性能或其他方面的任何好处?

最佳答案

一般来说,为不同目的重用变量名是非常糟糕的做法 - 如果其他人稍后需要维护您的代码,则该人将不得不在您的代码中找到这些“上下文切换”,其中 x现在突然意味着不同于该行代码之前的含义。

你可能会节省一些内存,但与它引入的问题相比,这是非常小的,因此建议不要这样做。 (也请阅读下面的编辑。)

通常,除了循环计数器之外,还建议不要使用 1 个字符的变量名。有人可能会争辩说 x 也可以是 X 坐标,但在那种情况下我会使用一些前缀或更长的名称。单字母变量名称太短,无法提供有关变量用途的有意义提示。

编辑:正如一些评论(以及其他一些答案)所指出的,潜在的内存节省(如果有的话)取决于编译器的性能。编写良好的优化编译器可能会意识到两个变量没有重叠的生命周期,因此无论如何它们只分配一个变量槽。最终结果将是没有运行时 yield ,而且源代码的可维护性更差。这只是强化了论点:不要重用变量。

关于c - 重用变量是好是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17884339/

相关文章:

C++ 比较和递减变量

c - scanf 的异常行为

c++ - 为什么 visual studio code C/C++ 扩展会安装 mono 框架程序集?

c - 多线程C程序;如何杀死线程产生的进程?

c - 尝试将地址传递给简单变量到 C 中的函数(指针和循环)

java - 禁用 Eclipse **VARIABLES** 自动完成

c - 如何将一个C文件分成多个文件

c - 用于存储立即字符串的内存 session ,在 C 中

mysql order by 然后设置最新日期的值

javascript - Runscope 复杂初始变量