What's the purpose of using braces (i.e. {}) for a single-line if or loop?

前端 未结 23 1442
独厮守ぢ
独厮守ぢ 2020-11-28 00:33

I\'m reading some lecture notes of my C++ lecturer and he wrote the following:

  1. Use Indentation // OK
  2. Never rely on operator preced
23条回答
  •  悲哀的现实
    2020-11-28 01:23

    Let's attempt to also modify i when we increment j:

    int j = 0;
    for (int i = 0 ; i < 100 ; ++i)
        if (i % 2 == 0)
            j++;
            i++;
    

    Oh no! Coming from Python, this looks ok, but in fact it isn't, as it's equivalent to:

    int j = 0;
    for (int i = 0 ; i < 100 ; ++i)
        if (i % 2 == 0)
            j++;
    i++;
    

    Of course, this is a silly mistake, but one that even an experienced programmer could make.

    Another very good reason is pointed out in ta.speot.is's answer.

    A third one I can think of is nested if's:

    if (cond1)
       if (cond2) 
          doSomething();
    

    Now, assume you now want to doSomethingElse() when cond1 is not met (new feature). So:

    if (cond1)
       if (cond2) 
          doSomething();
    else
       doSomethingElse();
    

    which is obviously wrong, since the else associates with the inner if.


    Edit: Since this is getting some attention, I'll clarify my view. The question I was answering is:

    What's the benefit of using the 1st version?

    Which I have described. There are some benefits. But, IMO, "always" rules don't always apply. So I don't wholly support

    Always use a { } block - even for a single line // not OK, why ???

    I'm not saying always use a {} block. If it's a simple enough condition & behavior, don't. If you suspect someone might come in later & change your code to add functionality, do.

提交回复
热议问题