To simplify or disambiguate, that is the question

In “Creeping featurism and the ratchet effect“, Mark Dominus discusses (among other things) how adding parentheses to an expression to disambiguate the operator precedence is a Bad Thing™. Of course, in the example where there are no operators in the parentheses – next if !($file =~ (/txt/)); – he’s right: (x) will never be more clear than x.

However, I find the argument for avoiding parentheses for disambiguation strange: Each parenthesis makes the code a little harder to read. Proper engineers should instead look up the answer whenever the precedence is ambiguous. This begs the questions: Which takes the most time?

Without parentheses, the developer will have to either know the precedence rules by heart (something even Mr. Dominus admits he doesn’t), or to check out a table in the documentation. But if Perl treats parentheses like most other languages, I’ll never have to look up that table if I’m using them. Even presuming that you’d keep the documentation in a nearby browser window when programming, I’d be hard pressed to think that it’s faster to switch application, look up the proper web page, switch back, and apply that piece of information, than simply looking at the code, and applying that piece of information directly. Even someone who’s only ever programmed in other languages would be able to understand such code without checking the manual.

Harddisk space is abundant, but developer time is not.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s