在函数内或调用之前进行条件检查?

时间:2010-04-09 01:27:13

标签: coding-style

您更喜欢这两种编程风格中的哪一种?为什么?一个人对另一个人有特别的好处吗?

// Style 1
if (doBorder)
    doTheBorder();
if (doFrame)
    doTheFrame();
if (doDraw)
    doTheDraw();

void doTheBorder()
{
  // ...
}

void doTheFrame()
{
  // ...
}

void doTheDraw()
{
  // ...
}

// Style 2
doTheBorder();
doTheFrame();
doTheDraw();

void doTheBorder()
{
  if (!doBorder)
    return;
  // ...
}

void doTheFrame()
{
  if (!doFrame)
    return;
  // ...
}

void doTheDraw()
{
  if (!doDraw)
    return;
  // ...
}

1 个答案:

答案 0 :(得分:2)

第一个。第二个似乎是......缺乏自信。如果您甚至不知道是否要完成边框,为什么要致电doTheBorder()? IMO,你应该断言边界确实需要做,然后然后充满信心地呼叫doTheBorder()

...另外,从更技术的角度来看:如果doTheBorder()位于封闭的API中,那么遥远未来的开发人员可能会调用它,如果使用第二种样式,他们可能想知道为什么尽管他们打电话给doTheBorder(),边界仍未完成。当然,有时某些情况或限制或限制可能会要求使用第二种风格,但我会尽可能避免使用它。