"Dave Thomas" <Dave / PragmaticProgrammer.com> wrote in message
news:m2itm175xd.fsf / zip.local.thomases.com...

> The Pragmatic Pragma: use parantheses around method arguments!

Since reading the book Writing Solid Code a couple of years ago I've always
used parentheses around expressions and arguments in languages where it is
optional to avoid ambiguities and stupid mistakes with precendences. I've
made it a part of my programming style to use parentheses in all expressions
so I never need to hesitate how the expression will be interpreted/compiled
except for +-*/ operators. For example:

if( (true == fExpression) && (true == fInHeader) )

When learning and developing my Ruby style I've been a bit lazy and skipped
the parentheses now and then.

Some sample code:

if strOutput =~ /^\s*'/ and 0 == indentLevel
...
end

instead of

if (strOutput =~ /^\s*'/) and (0 == indentLevel)

or even

if( (strOutput =~ /^\s*'/) and (0 == indentLevel) )

I've used very simple expressions as samples but the more complex they get
the more important parentheses get. Like when mixing several "and" and "or".

To use parentheses when the complexity level reaches a certain level or to
be consistent and use them all the time. To use them all the time has in
fact sped up my C/C++ coding because I never have to stop and think about
precedence rules like I used to do. Maybe it is a bit different with an
interpreting language that has to throw away all those unneccessary
parentheses? Maybe this won't be an issue if there will be such a thing like
a RubyVM?

Any thoughts, suggestions, experience (bad and/or good) on this issue would
be appreciated.

/rob