2013-06-20 13 views
6

ich, was der Unterschied zwischen den beiden folgenden Erklärungen ist in Header-Dateien ich über diese beiden ArtenFunktionsprototyp in Header-Dateien

void some_method(int); 

und die zweite Art ist gekommen wissen wollte:

void some_method(int a); 

Hat ein Stil einen Vorteil gegenüber dem anderen? Für mich hat ein Stil einfach nicht den Namen einer Variablen und der Name der Variablen muss in der begleitenden cpp-Datei implementiert werden.

Antwort

9

Es gibt keinen Unterschied in der Funktionalität, aber ich verwende oft Parameternamen als eine Form der Dokumentation, etwa so:

void verbTheThing(int verbId, int thingId); 

Wenn ich nichts wertvoll hinzuzufügen habe, ich kann es einfach nicht hinzufügen:

+1

Es gibt einen Workflow-Vorteil in der Deklaration und Definition die gleiche - Sie können dann einfach kopieren und einfügen zwischen dem einen - das ist nicht so einfach, wenn Sie Verwenden Sie das kürzere Formular für die Deklaration. –

+0

Danke, das half – MistyD

+0

@PaulR Guter Punkt. Ich könnte stattdessen gesagt haben, dass ich mich bemühe, sinnlose (potentiell ablenkende) Parameternamen zu entfernen, wenn ich den Prototyp in die Header-Datei setze. –

4

Das Hauptproblem ist Konsistenz. Wähle einen aus und bleib dabei. Ich bevorzuge das zweite persönlich, weil Parameternamen Funktionen beschreiben können und Code, der selbstdokumentiert, besser ist als die Alternative.

+0

+1; In der Regel mache ich Ausnahmen für voreingestellte und gelöschte Sonderfunktionen. –

3

Der Hauptunterschied ist die Lesbarkeit. Die zweite Version ist länger, aber der Name des Arguments kann eine echte Hilfe sein. Kleines Beispiel:

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

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

Beide nicht, einen Unterschied machen, so weit wie die Zusammenstellung betrifft. Aber die zweite ist besser, denn wenn man einem Parameter einen Namen gibt, erhöht dies die Lesbarkeit des Codes und hilft den Leuten, ihn besser zu verstehen.

1

Beide Optionen sind gültig. Aber die Angabe des Parameternamens in der Kopfzeile kann dem Benutzer beim Lesen der Funktionssignatur sehr helfen, schnell herauszufinden, was er tatsächlich tut und welche Daten die Parameter darstellen.

2

Einige Entwicklungsumgebungen (Visual Studio, Borland C++ Builder, zum Beispiel, Eclipse soll auch diese Funktion haben) automatisch Funktionsargumente auflisten, wenn Sie ( Klammer eingeben.

list parameters

Für den IDEs ist es üblich, mit freundlicher Genehmigung sicher (im Header), dass das Funktionsargument Namen zu machen wie möglich als beschreibend sind, weil sie als Dokumentation dienen.

Auch wenn der Programmierer keine IDE mit dieser Funktion hat, sollten Vorwärtsfunktionsdeklarationen (in Kopfzeilen) immer so beschreibend wie möglich sein. Aus dem gleichen Grund - es ist einfacher, Header zu öffnen und zu lesen, was Funktionsparameter bedeuten sollen, anstatt den Funktionskörper innerhalb einer Vielzahl von *.cpp Dateien zu suchen.

Ganz zu schweigen davon, dass Sie in einigen Funktionen nicht herausfinden können, welche Parameter ohne Parameternamen gemeint sein sollen.

Zum Beispiel

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

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); 

Natürlich könnte, ein C++ Programmierer würde Klassen für Punkt und Größe in dieser Situation hinzuzufügen, aber das ist eine andere Geschichte.

0

Eigentlich gibt es keinen Unterschied zwischen ihnen. Es läuft darauf hinaus, wo Sie Ihre Methoden deklarieren ... Zum Beispiel, wenn Sie Ihre Funktion vor "main()" -Funktion deklarieren. Sie müssen sich wahrscheinlich nicht um den Parameternamen kümmern. Nachdem Sie jedoch der Methode Deklaration vorangestellt haben, müssen Sie Ihren Parameternamen in definition eingeben. Es ist nur Code-Stil, ermöglicht Ihnen und jedem, Sie zu lesen Code

Verwandte Themen