在IF THEN ELSE构建中放置注释的地方

我从来没有决定评论IF-THEN-ELSE结构的最好方法是什么,所以我从来没有以一致的方式对它们进行标准化评论。 我很欣赏任何见解。

一些选项:

一个)

IF (blabla) { 
   // this comment explains what happens in the IF case
   dothis();
} else { 
  // this comment explains what happens in the ELSE case
   dosomethingelse();
}

缺点:在多个dothis()语句的情况下,我喜欢评论主要块,在这种情况下,并不总是清楚IF注释是属于第一个dothis()块还是属于整个IF情况

或b)

IF (blabla) { // this comment explains what happens in the IF case
   dothis();
} else { // this comment explains what happens in the ELSE case
   dosomethingelse();
}

缺点:只适用于简短评论。 如果IF和ELSE情况不能直接从代码中清除,我通常会评论IF-THEN-ELSE结构,这通常需要超过一行的注释。

或c)

// if the following happens
IF (blabla) { // then do this
   dothis();
} else { // or else do this
   dosomethingelse();
}

PS:我知道“代码应该是自我解释的”,但事实并非总是如此......


对我来说, IF上面的评论解释了IF声明本身。 例如,如果被测试的条件特别复杂。

IFELSE下面的块中的评论描述了一旦条件已经被评估并且做出了选择就会发生什么。

所以像这样:

//Is this a favoured customer and do we have a promotion?
if customer.special() and monthly.hasOffer() {
  //Add discount
  invoice.addDiscount();
} 
else {
  //Add note about favoured customer scheme
  invoice.addNotes(JOIN_OUR_DISCOUNT_SCHEME);
}

我从未给过它很多想法; 亲自和需要时我已经把注释放在IF和ELSE声明之上。 这让我很好地分离了关于分支语句的注释和关于代码的注释。

// comment about the if statement
if (expression)
{
    // comment about the code
    doSomething();
}
// comment about the else statement
else
{
    // comment about the code
    doSomethingElse();
}

我还注意到,我是迄今使用“开放式大括号样式”的唯一答案,这可能是对我的Pascal时代的回击,尽管我更喜欢代码块的开始和结束的视觉理由,所以我的评论风格可能不适用于“封闭花括号式社区”。


我会做案例a),但有一点额外的空白:

if (blabla) {
   // This explains the whole if case

   // Can comment here for specific block comments
   doThis();
} else {
   // This explains the else case

   // Same again
   doSomethingElse();
}
链接地址: http://www.djcxy.com/p/85283.html

上一篇: Where to put comments in an IF THEN ELSE construct

下一篇: What are your "hard rules" about commenting your code?