On 12.11.2016 at 14:59, Nikita Popov wrote:
> There are two ways in which you can have code mixed with declarations. The
> first one is within a single "basic block", like this:
>
> int a = ...;
> b = ...;
> int c = ...;
> a = ...;
> float d = ...;
> // ...
>
> I can totally see how some many people might find this kind of code to be
> objectionable.
>
> However, the use-case that I have in mind is different -- it's the case
> where declarations **are** at the top of a block -- but its the top of a
> basic block in terms of control flow, not a block in terms of C syntax. To
> clarify what I mean by that: For a compiler (and arguably, a programmer),
> the control flow of
>
> if (...) {
> return;
> }
>
> // Basic block starts here, but not C block
> type var = ...;
>
> and of
>
> if (...) {
> return;
> } else {
> // Basic block starts here, and C block
> type var = ...;
> }
>
> is the same. The declaration in both cases is at the top of a control-flow
> block. It just doesn't happen to coincide with a syntactic C block.
>
> This is the case I'm interested in.
>
> Anyway, I'll just leave this gem from our codebase here:
> https://github.com/php/php-src/blob/master/ext/standard/http_fopen_wrapper.c#L114
> (Some of those variables have 500 lines of code between declaration and
> first use)
In my humble opinion, inline declarations wouldn't make this code
understandable – there are simply way too many variables and the
function is way too large generally, and as such should be broken up.
--
Christoph M. Becker
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php