2013-06-20 10 views
6

volevo sapere quale sia la differenza tra le seguenti due dichiarazioni è nei file header ho incontrato entrambi questi stiliprototipo di funzione nell'intestazione file

void some_method(int); 

e il secondo stile è:

void some_method(int a); 

Uno stile ha qualche vantaggio rispetto all'altro. Per me uno stile non ha il nome di una variabile e il nome della variabile deve essere implementato nel file cpp allegato.

risposta

9

Non ci sono differenze in termini di funzionalità, ma io spesso uso i nomi dei parametri come una forma di documentazione, in questo modo:

void verbTheThing(int verbId, int thingId); 

Quando ho nulla di valore da aggiungere, solo che non aggiungerlo:

int max(int, int); 
+1

C'è un vantaggio del flusso di lavoro nel mantenere la dichiarazione e la definizione uguali - è quindi possibile copiare e incollare facilmente l'uno con l'altro - questo non è così facile se si usa il modulo più breve per la dichiarazione. –

+0

Grazie a questo ha aiutato – MistyD

+0

@PaulR Buon punto. Potrei invece dire che faccio uno sforzo per rimuovere i nomi di parametro privi di significato (potenzialmente distraenti) quando inserisco il prototipo nel file di intestazione. –

4

La preoccupazione principale è consistenza. Scegline uno e attaccalo. Preferisco il secondo personalmente perché i nomi dei parametri possono descrivere la funzionalità e il codice che l'autodocumentazione è migliore dell'alternativa.

+0

+1; Generalmente faccio eccezioni per le funzioni speciali predefinite e cancellate. –

3

La principale differenza è la leggibilità. La seconda versione è più lunga, ma avere il nome dell'argomento può essere un vero aiuto. Piccolo esempio:

int move(int, int, int, int); 

int move (int fromX, int fromY, int toX, int toY); 
1

Entrambi non fanno alcuna differenza per quanto riguarda la compilazione. Ma il secondo è migliore, dato che dare un nome a un parametro aumenta la leggibilità del codice e aiuta le persone a capirlo meglio

1

Entrambe le opzioni sono valide. Ma specificare il nome del parametro nell'intestazione può aiutare notevolmente qualcuno a leggere la firma della funzione per capire rapidamente cosa fa realmente e quali dati rappresentano i parametri.

2

Alcuni ambienti di sviluppo (Visual Studio, Borland C++ Builder, ad esempio, eclipse dovrebbe avere questa funzionalità) elencano automaticamente gli argomenti delle funzioni, quando si entra nella parentesi (.

list parameters

Per questi IDE è cortesia comune per fare in modo che i nomi di funzione di argomento (in intestazioni) sono più descrittivo possibile, perché servono come documentazione.

Anche se il programmatore non ha IDE con questa funzione, le dichiarazioni delle funzioni di inoltro (nelle intestazioni) devono sempre essere il più descrittive possibile. Per lo stesso motivo - è più facile aprire l'intestazione e leggere quali parametri di funzione dovrebbero significare, invece di cercare il corpo della funzione all'interno di una miriade di file *.cpp.

Per non parlare del fatto che in alcune funzioni non è possibile capire quali parametri dovrebbero significare senza nomi di parametri.

Per esempio,

Image::blitRect(int, int, int, int); 

potrebbe essere

Image::blitRect(int x1, int x2, int y1, int y2); 
Image::blitRect(int x1, int y1, int x2, int y2); 
Image::blitRect(int x, int y, int width, int height); 

Naturalmente, un programmatore C++ dovrebbe aggiungere le classi per Point e Dimensione in questa situazione, ma questa è un'altra storia.

0

In realtà, non vi è alcuna differenza tra di loro. Si riduce a dove stai dichiarando i tuoi metodi ... Ad esempio, nel caso in cui dichiari la tua funzione prima di "main()" func. probabilmente non ti interessa il nome dei parametri. Tuttavia, avendo preceduto la dichiarazione del metodo , è necessario introdurre il nome dei parametri nella definizione. È solo Code Style, consente a chiunque di leggere il proprio codice

Problemi correlati