Exceptional coding style
monarch_dodra
monarchdodra at gmail.com
Fri Jan 18 04:13:46 PST 2013
On Friday, 18 January 2013 at 10:49:52 UTC, Jonathan M Davis
wrote:
> On Friday, January 18, 2013 11:30:32 deadalnix wrote:
>> If you believe you know operator precedence, you are probably
>> wrong. And even if you are right, most other programmer don't.
>
> You really should know the precedence of at least the common
> operators. For
> instance, I don't think that there's much excuse for code like
>
> if((a == b) && (c != d))
>
> The parens just clutter the code, and any programmer worth
> their salt should
> know that the comparison operators has higher precedence than
> the logical
> operators. And programmers should definitley know the
> precedence of the
> arithmetic operators, such that if they're putting parens
> around ever
> expression using + or *, then there's a problem.
>
> On the other hand, I can totally understand if someone is
> nervous about doing
> stuff like
>
> if(++*var == a)
>
> I fully expect that your average programmer won't fully know
> the operator
> precedence table. _I_ don't know it perfectly. But for the more
> common
> operators, you should know it, and using extra parens in those
> cases just
> makes the code harder to read.
>
> - Jonathan M Davis
Keep in mind that us, as enthusiasts, have a warped view on the
matter.
A lot of my "programmer" colleagues don't really give a damn,
and, for them, precedence stops at arithmetic operators. I'm not
saying they are bad programmers, but they just can't be arsed
with that kind of stuff: They just don't care.
*Personally*, I prefer
if ((a == b) && (c != d))
over
if (a == b && c != d)
I *know* the precedence here, but I still find it clearer with
grouping.
HOWEVER, I 100% agree that in such code, the format chosen is
very very important. Place spaces in the wrong spots:
if ( ( a == b ) && ( c != d ) )
And the eyes begin to bleed...
As a side note, I've taken to ALWAYS placing parenthesis with
ternary operators. That thing has some nasty precedence rules...
More information about the Digitalmars-d
mailing list