Manypeople hanno discusso sulla dimensione della funzione. Dicono che le funzioni in generale dovrebbero essere piuttosto brevi. Le opinioni variano da qualcosa come 15 righe a "circa uno schermo", che oggi è probabilmente di circa 40-80 linee.
Inoltre, le funzioni devono sempre soddisfare solo un'attività.È una cattiva pratica avere un lungo metodo di inizializzazione?
Tuttavia, esiste un tipo di funzione che spesso non riesce in entrambi i criteri nel mio codice: Funzioni di inizializzazione.
Ad esempio in un'applicazione audio, l'hardware/API audio deve essere impostato, i dati audio devono essere convertiti in un formato adatto e lo stato dell'oggetto deve essere inizializzato correttamente. Questi sono chiaramente tre diversi compiti e, a seconda dell'API, questo può comprendere più di 50 linee.
La cosa con le funzioni di init è che in genere vengono chiamati solo una volta, quindi non è necessario riutilizzare nessuno dei componenti. Li interrompereste in diverse funzioni più piccole, considerereste valide le funzioni di inizializzazione?
+1 per 'assert()' solo. – ndim
+1: "non è necessario riutilizzare nessuno dei componenti." Il riutilizzo non è il problema. Scrivere qualcosa che possa essere compreso e mantenuto da altre persone è molto, molto più importante. –
Ricordo un consiglio di lasciare gli identificatori che iniziano con caratteri di sottolineatura all'uso interno del compilatore C ed evitandoli nei programmi. Inoltre, dovresti contrassegnare quelle tre funzioni init una tantum come 'static'. Per una volta, non verranno utilizzati al di fuori del file sorgente corrente. E come ulteriore vantaggio, un compilatore intelligente vedrà che vengono chiamati solo una volta e solo inline il codice (nel caso in cui siate preoccupati per il sovraccarico di chiamata). – ndim