in reply to No braces

In C/Java/etc, not using braces on multi-line if's with identation can lead to maintainance problems.

before:

if (x>3) foo()

then someone will-undoubtedly screw up like this:

if (x>3) foo() bar()

the requirement of braces is a GoodThing (TM).

So if you are writing short statements in C without braces, it's best to use the ternary operator or keep things on the same line:

(x>3) ? foo() : bar();

OR (less elegantly)

if (x>3) foo(); else bar();

As this prevents the "ignored brace" error if you don't get in the habit of skipping braces. In practice though, using braces in all cases is best. This means write your C one lines WITH braces.

if (x>3> { foo(); }

Subject to other controvery is whether opening braces can go at the same line as functions and loops. GNU "C" coding style says yes for loops, no for functions. (I think).

Perl tends to allow a coder to be more stylistic with coding convention, in fact, it tends to encourage it. But having strict rules on braces (everything is a BLOCK) goes a long way to keeping things orderly.

Replies are listed 'Best First'.
Re: Re: No braces
by vek (Prior) on Feb 11, 2004 at 17:45 UTC

    then someone will-undoubtedly screw up like this:

    if (x>3) foo() bar()

    That point was *really* driven home in one of the first C++ programming classes I ever took at school. The professor made a big thing of making sure we *always* used braces even though you didn't have to. I can still picture him waving his hands at the front of the classroom "down the road, someone will want to add something and will forget to add braces. Tears of frustration will ensue because you can't figure out why the code broke."

    Good advice methinks.

    -- vek --

      And no doubt one of the many reasons Larry chose to bypass the errors and use blocks everywhere but in modifiers, but made the modifiers look suitably different by putting the conditional after the statement that nobody would fall prey to this mistake.


      ---
      demerphq

        First they ignore you, then they laugh at you, then they fight you, then you win.
        -- Gandhi


Re: Re: No braces
by bunnyman (Hermit) on Feb 12, 2004 at 19:55 UTC
    then someone will-undoubtedly screw up like this:
    if (x>3) foo() bar()

    Why don't you say somebody will undoubtably screw it up like this:

    if (x > 3) Hello computer! Please execute the program on my floppy disk now!! + Thank you!

    Is it really too much to ask to say that programmers should know what their own code does? Maybe it's just me, but I think it's not.