La funzione main () è migliore di tutte le altre funzioni? [chiuso]

0

Il mio professore universitario mi ha detto che le funzioni principali dovrebbero essere definite in base alle altre definizioni di funzione. Dovremmo usare una dichiarazione anticipata per realizzare questo (usiamo C in quel momento). Quindi sì, la mia domanda è: perché main() dovrebbe essere in cima alle altre definizioni di funzione? Questo vale per tutti i linguaggi di programmazione che utilizza main() come punto di ingresso del programma?

    
posta Bryan James 29.06.2016 - 17:21
fonte

2 risposte

3

È in gran parte una questione di preferenze personali, anche se alcuni luoghi potrebbero renderlo uno standard di codifica formale. C non gliene importa.

Da parte mia, se sto definendo più funzioni in un singolo file sorgente, definirò le funzioni chiamate prima del chiamante:

void foo( void )
{
  ...
}

void bar( void )
{
  ...
  foo();
  ...
}

int main( void )
{
  ...
  bar();
  ...
}

invece di

int main( void )
{
   void bar( void );
   ...  
   bar();
   ...
}

void bar( void )
{
  void foo( void );
  ...
  foo();
}

void foo( void )
{
  ...
}

Il problema con l'utilizzo delle dichiarazioni anticipate aumenta il carico di manutenzione; se cambi il prototipo di funzione (tipo di ritorno, numero e / o tipi di parametri), ora devi apportare quelle modifiche in due posti invece di uno.

Naturalmente, se chiami funzioni definite in un file sorgente diverso, hai bisogno di dichiarazioni separate (preferibilmente raggruppate nel loro file di intestazione):

/**
 * functions.c
 */
#include "functions.h"

void foo( void )     // Note that I'm still defining called functions
{                    // before their callers, even though in this case
  ...                // it's not necessary, since "functions.h" contains
}                    // the declaration for foo().

void bar( void )
{
  ...
  foo();
  ...
}

/**
 * functions.h
 */
#ifndef FUNCTIONS_H
#define FUNCTIONS_H

void foo( void );
void bar( void );

#endif

/**
 * main.c
 */
#include "functions.h"

int main( void )
{
  ...
  bar();
  ...
}

Does this apply to all programming languages that uses main() as the entry point of the program?

Ancora una volta, per la maggior parte di quelle lingue, è strettamente una questione di stile e preferenze personali. La stessa definizione del linguaggio non interessa.

    
risposta data 29.06.2016 - 17:38
fonte
1

Il posto migliore è da qualche parte che le persone possano trovarlo.

Nel mezzo di un file molto grande è male. In alto è buono, ma altri potrebbero preferire proprio in fondo.

Inoltrare che main () non aiuta, ed è spesso inutile comunque - perché è molto insolito chiamare in modo esplicito main () dal tuo codice.

    
risposta data 29.06.2016 - 17:37
fonte

Leggi altre domande sui tag