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;
  // ...
}

最佳答案 首先.第二个似乎是……缺乏自信.如果你甚至不知道你是否想要完成边框,为什么要调用doTheBorder()? IMO,你应该断言边界真的需要做,然后自信地调用doTheBorder()!

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

点赞