变量声明与错误检查:哪个先来?

rkg*_*rkg 3 language-agnostic error-handling initialization

在编写函数时,我总是有这样的困惑:是先检查错误还是稍后声明变量(或)将参数分配给局部变量,然后检查错误.以下哪种方式首选,为什么?我通常坚持第一种类型.

void DoSomething1(Object x, Object y){

  // All sort of error checking goes here
  if IsError(x) return;
  if IsError(y) return;

  // Variable declaration
  int i,j;
  Object z = x;
}


void DoSomething2(Object x, Object y){

  // Variable declaration
  int i,j;
  Object z = x;

  // All sort of error checking goes here
  if IsError(z) return;
  if IsError(y) return;

}
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 7

您应该遵循接近规则并尽可能地声明变量.这使他们的创建和使用本地化.你也应该在检查有效参数最早可能的机会,最大限度地减少执行的工作.

因此,我同意你的第一个更好,但它主观的.对于另一种方法可能有争议,但我还没有听到有说服力的方法,所以我认为这两条指导方针是最佳做法.

既然你说的是"语言不可知",尽管你的代码看起来有点奇怪:-),几乎可以肯定有些语言你没有选择,变量必须在顶部声明.

  • @Ravi:假设变量的初始化非常昂贵.现在假设该函数被设计为等待来自另一个线程的信号,并且一旦信号从数据结构中提取一些信息(可能非常便宜)并将其传递到某处.在这种情况下,在开始等待信号之前初始化变量可能是有意义的,因此接收信号之后的处理更快. (2认同)