Non è una cattiva pratica. Il bello del C++ è che ti permette di programmare in molti stili. Ciò conferisce al linguaggio una grande flessibilità e utilità, ma forse rende più complicato da imparare rispetto ad altri linguaggi che ti obbligano a scrivere codice in uno stile particolare.
Se si dispone di un programma di dimensioni ridotte, è possibile scriverlo in un'unica funzione, possibilmente utilizzando un paio di goto per il flusso di codice.
Quando si aumenta, la suddivisione del codice in funzioni consente di organizzare le cose.
Più grande ancora, e le classi sono generalmente un buon modo per raggruppare le funzioni correlate che funzionano su un determinato insieme di dati.
Più grande ancora, i namespace aiutano.
A volte, tuttavia, è più semplice scrivere una funzione per fare qualcosa. Questo è spesso il caso in cui si scrive una funzione che funziona solo su tipi primitivi (come int). int non ha una classe, quindi se vuoi scrivere una funzione printInt(), potresti renderla indipendente. Inoltre, se una funzione funziona su oggetti di più classi, ma in realtà non appartiene a una classe e non all'altra, ciò potrebbe avere senso come funzione autonoma. Questo accade molto quando scrivi operatori come definire meno di così da poter confrontare oggetti di due classi diverse. Oppure, se una funzione può essere scritta in termini di metodi pubblici di classi e non ha bisogno di accedere direttamente ai dati della classe, alcune persone preferiscono scriverle come una funzione autonoma.
Ma, davvero, la scelta è vostra. Qualunque sia la cosa più semplice da fare per risolvere il tuo problema è la cosa migliore.
È possibile avviare un programma come solo alcune funzioni, quindi decidere in seguito se alcune sono correlate e riordinarle in una classe. Ma se le altre funzioni autonome non rientrano naturalmente in una classe, non è necessario forzarle in una classe.
fonte
2009-05-23 21:52:14
intendi intestazioni senza classe? non sei sicuro di cosa intendi con "che non dichiarano una classe", a causa dei diversi usi di "dichiarare una classe" nella comunità SO. –
Sì, intendo un'intestazione senza classe, non ero sicuro di come spiegarlo. Fondamentalmente un file di intestazione che ha solo un mucchio di definizioni di funzioni. –