On 28 Jul 2014, at 15:00, Derick Rethans <der...@php.net> wrote:

>> Well, we don’t need to allow all of C99. We can simply allow using 
>> features that are widely supported and actually useful. For example, 
>> declarations between statements,
> 
> I think that makes code a lot less readable, so I would not be in favour 
> allowing this in our coding guidelines.

Really? I’ve found that declaring everything in advance makes for hard-to-read 
code. To take an example from code I’ve written (admittedly not C code - GML if 
anyone’s curious - but it might as well be), the first line of a function 
looked like this:

    var list, hashList, text, i, pluginname, pluginhash, realhash, url, handle, 
filesize, progress, tempfile, tempdir, failed, lastContact, isCached, env;

Even broken onto multiple lines, declaring everything at once isn’t nice. For 
large functions (and some functions have to be large necessarily), declaring 
everything at the start just means a long list of variables and I would argue 
impairs code readability.

You should declare variables when and where you need them. If everything is 
done at the top, you have to scroll up to check the type of a variable. It also 
means that now-unused variables are less obvious as the declarations are far 
away from the usage, so you probably won’t spot that it’s useless unless you 
look at your compiler warnings.

Actually, a similar issue popped up in the code where that example was from. 
The language it was written in had some unfortunate properties, one of which 
was that variables not explicitly declared would instead be treated as 
properties of the current object. Because all the variables were declared at 
the start of the function, it was easy to miss the fact that some variables 
being used had not actually been declared. Of course this specific issue 
doesn’t exist in C, but it is an example of why having to declare all your 
variables at the start of a function isn’t really a good thing.

If nothing else, I think we should use C99’s ability to declare variables 
between statements. It makes it more likely mistakes will be spotted, eases 
reading code, and as far as I am aware, is widely supported.

--
Andrea Faulds
http://ajf.me/





--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to