Declare and Define Before Use? [rant]

Cym13 cpicard at openmailbox.org
Wed Apr 4 20:19:12 UTC 2018


On Wednesday, 4 April 2018 at 19:51:27 UTC, kdevel wrote:
> On Wednesday, 4 April 2018 at 19:19:30 UTC, Ali wrote:
>> On Wednesday, 4 April 2018 at 18:57:27 UTC, kdevel wrote:
>> [...]
>> I think the rules should have been the same everywhere
>> and if there was an exception to be made, it could be made for 
>> the main function
>> since the main function is special anyway
>
> The main function of a program corresponds to the final 
> paragraph of a novel. I never understood why programmers place 
> this function which possibly depends on all other functions in 
> the translation unit at the beginning.
>
> BTW: You can't write
>
>    void main ()
>    {
>       x.writeln;
>       int x;
>    }
>    import std.stdio;
>
> There is no reason why the declaration of x should not be 
> postponed.

I've never seen the main function at the top but I think it would 
be be nice place for it honnestly. Sounds more like a C legacy 
than anything.

The reason why I place common imports at the top is because I 
read a *lot* of code as my day job is to audit software. While 
skimming rapidly through directories looking only at the top of 
each file I know what they are about and can quickly infer their 
purpose based solely on imports. This file does IO, this one web 
stuff, etc (and to debunk quickly a counter argument I've heard 
before: no, given how convoluted file names quickly get 
especially in languages like java, directory structure isn't 
nearly enough).

The same is true for the main function. If your code is clean it 
should the main is the place where you orchestrate the whole 
program. You should be able to grasp most of the program flow 
from it. What it setups, information flow, etc. Of course in 
practice people are often trying to burry useful information deep 
down in functions (where it's generally too coupled for its own 
good, but that's another story). Such burrying makes it harder to 
get useful information from the main function, hence maybe why so 
many are comfortable putting it at the end (I know I do by habit).

On the other hand, if the main effectively describes the programs 
course then putting it at the beggining makes complete sense: it 
is what you want to see first to get an idea of what the program 
is doing. No function could be better suited for that.

Some points hinted here make me think of 
https://www.youtube.com/watch?v=FyCYva9DhsI so maybe it could be 
of some interest to you.


More information about the Digitalmars-d-learn mailing list