On Monday, 24 March 2014 at 02:31:46 UTC, Andrei Alexandrescu wrote:
One concession we could make would be to disallow using the result of the operator. That might actually catch all bugs discussed herein.

if (condition) ++i, ++j; // fine
foreach (e; exp1, exp2) {}   // ERROR
if(pMgr->ShouldRecordEvent(eSE_Weapon), pOwnerRaw) // ERROR
return pMgr->RecordEvent(eSE_Weapon), pOwnerRaw; // ERROR

I think this would be a compromise worth looking into.


Andrei

That's a good idea. I never personally use the comma operator, as I think that it makes code less readable having multiple expressions evaluated on a single line. For the same reason, I almost never put multiple semicolon-delimited statements on the same line. Code like the above I find particularly egregious. It plays havoc with the programmer's expectation that they can parse the code left-to-right to figure out the result of an expression, forcing them to read in spirals. This is just as bad as the pointer declaration syntax for C/C++, just not as common.

Reply via email to