Codekonventionen: Unterschied zwischen den Versionen
Hauer (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Eine Codekonvention ist eine Übereinkunft unter Programmierern einen gewissen Stil beim Schreiben ihrer Programme einzuhalten. Über die Jahre hinweg haben si…“) |
Hauer (Diskussion | Beiträge) (→Verständlichkeit eines Algorithmus) |
||
Zeile 33: | Zeile 33: | ||
Beide Programme führen das gleiche aus. Beide berechnen das Produkt von ''a'' und ''b'', ohne eine Multiplikation durchzuführen. Sie addieren ''b'' ''a''-mal auf eine Ergebnisvariablen auf, Genaueres s. [[Schleife | Schleifen]]. Diese Variable wird zum Schluss zurückgegeben. | Beide Programme führen das gleiche aus. Beide berechnen das Produkt von ''a'' und ''b'', ohne eine Multiplikation durchzuführen. Sie addieren ''b'' ''a''-mal auf eine Ergebnisvariablen auf, Genaueres s. [[Schleife | Schleifen]]. Diese Variable wird zum Schluss zurückgegeben. | ||
+ | |||
+ | == Bezeichner und Leerzeichen == | ||
+ | |||
+ | Da in Programmiersprachen der Text maschinell analysiert werden muss um später vom Compiler übersetzt werden zu können, gibt es folgendes immer zu beachten: Eine Zeichenkette, die als Bezeichner für ein Programmelement genutzt wird, darf keine Leerzeichen (engl. ''whitespaces'') beinhalten. Dies würde ansonsten den Beginn und das Ende des Bezeichners uneindeutig deklarieren und die Analyse dieses Programmteils wäre um ein vielfaches aufwändiger! Deswegen verbieten fast alle Programmiersprachen dies. Um jedoch nun einen Bezeichner aus mehr als einem Wort bestehen lassen zu können, verwenden Programmierer verschiedene Formen der Notation, die im Folgenden erklärt werden. | ||
+ | |||
+ | == Notationsbegriffe == | ||
+ | |||
+ | Im Zusammenhang mit Codekonventionen haben sich verschiedene Begriffe etabliert: | ||
+ | |||
+ | * Lower-Case: Aus dem englischem für "Kleinbuchstaben". Bezeichner werden als eine zusammenhängende Zeichenkette hintereinander geschrieben, während alle Buchstaben klein sind. '''Beispiele''': nanosecondsinsecond, valueineuro, positionx, positiony | ||
+ | |||
+ | * Upper-Case: Aus dem englischen für "Großbuchstaben". Bezeichner werden als eine zusammenhängende Zeichenkette hintereinander geschrieben, während alle Buchstaben groß sind. '''Beispiele''': NANOSECONDSINSECOND, VALUEINEURO, POSITIONX, POSITIONY | ||
+ | |||
+ | * Camel-Case: Bezeichner werden als eine zusammenhängende Zeichenkette hintereinander geschrieben, während jeder Anfangsbuchstabe eines Wortes groß geschrieben wird. '''Beispiele''': NanosecondsInSecond, ValueInEuro, PositionX, PositionY | ||
+ | |||
+ | * Mixed-Camel-Case: Bezeichner werden als eine zusammenhängende Zeichenkette hintereinander geschrieben, während jeder Anfangsbuchstabe eines Wortes groß geschrieben wird, bis auf der erste. '''Beispiele''': nanosecondsInSecond, valueInEuro, positionX, positionY | ||
+ | |||
+ | * Underscored: Wörter in Bezeichnern werden durch einen Unterstrich '''_''' voneinander getrennt. '''Beispiele''': nanoseconds_in_sekunde, value_in_euro, position_X, position_Y . | ||
+ | |||
+ | Underscored kann in Kombination mit anderen Begriffen verwendet werden. So z.B. die in C verwendete lower-case-underscored Schreibweise für Variablen: nanosekunden_in_sekunde, wert_in_euro, position_x, position_y. | ||
+ | |||
+ | == Konventionen in Java == | ||
+ | |||
+ | Da wir im Praktikum des Modules Java programmieren, wollen wir, dass Sie folgende Konventionen einhalten: | ||
+ | |||
+ | * Klassennamen werden im Camel-Case notiert. '''Beispiele''': String, MeinProgramm, AbstractSingletonFactoryBean | ||
+ | |||
+ | * Variablen- und Attributsnamen werden im Mixed-Camel-Case notiert. '''Beispiele''': x, result, processRunning | ||
+ | |||
+ | * Methodennamen werden im Mixed-Camel-Case notiert. '''Beispiele''': calculate(int x, int y), doSomething(), cleanupAtShutdown() | ||
+ | |||
+ | * Klassenweite Konstanten werden im Underscored-Upper-Case notiert. '''Beispiele''': PI, NANOSECONDS_IN_SECOND, ARRAY_SIZE | ||
+ | |||
+ | Dies sorgt dafür, dass alles was einen '''Wert''' besitzt schnell durch den Kleinbuchstaben am Anfang erkannt werden kann, während von Typen mit Großbuchstaben unterschieden werden kann. Konstanten nehmen dabei eine traditionelle Sonderrolle ein, damit sie schnell als solche identifiziert werden können. |
Version vom 5. Oktober 2015, 09:09 Uhr
Eine Codekonvention ist eine Übereinkunft unter Programmierern einen gewissen Stil beim Schreiben ihrer Programme einzuhalten. Über die Jahre hinweg haben sich in fast allen Programmiersprachen eine oder mehrere solcher Standards gebildet.
Inhaltsverzeichnis
Verständlichkeit eines Algorithmus
Ein wichtiges Merkmal für einen Algorithmus ist die Möglichkeit für einen menschlichen Leser den Algorithmus lesen und verstehen zu können, obwohl er nicht in umgangssprachlicher Form vorliegt.
Als Beispiel sei folgender Algorithmus gegeben, der zwei Zahlen miteinander multipliziert, ohne explizit einen Multiplikationsoperator zu verwenden:
Eingabe: Zwei ganze Zahlen a und b Ausgabe: Produkt aus a und b Vorgehensweise: Initialisiere das Ergebnis mit 0 Addiere a mal b auf das Ergebnis Gebe das Ergebnis zurück
Beispiel für eine schwer verständliche Formulierung des Algorithmus':
public static int berechnen2(int a, int b){int erg=0;for(int i=0;i<a;i++){erg+=b;}return erg;}
Das gleiche Beispiel, lesbarer und mit Syntaxhighlighting hervorgehoben:
public static int berechnen(int a, int b) { int erg = 0; for(int i = 0; i<a ; i++) { erg += b; } return erg; }
Beide Programme führen das gleiche aus. Beide berechnen das Produkt von a und b, ohne eine Multiplikation durchzuführen. Sie addieren b a-mal auf eine Ergebnisvariablen auf, Genaueres s. Schleifen. Diese Variable wird zum Schluss zurückgegeben.
Bezeichner und Leerzeichen
Da in Programmiersprachen der Text maschinell analysiert werden muss um später vom Compiler übersetzt werden zu können, gibt es folgendes immer zu beachten: Eine Zeichenkette, die als Bezeichner für ein Programmelement genutzt wird, darf keine Leerzeichen (engl. whitespaces) beinhalten. Dies würde ansonsten den Beginn und das Ende des Bezeichners uneindeutig deklarieren und die Analyse dieses Programmteils wäre um ein vielfaches aufwändiger! Deswegen verbieten fast alle Programmiersprachen dies. Um jedoch nun einen Bezeichner aus mehr als einem Wort bestehen lassen zu können, verwenden Programmierer verschiedene Formen der Notation, die im Folgenden erklärt werden.
Notationsbegriffe
Im Zusammenhang mit Codekonventionen haben sich verschiedene Begriffe etabliert:
- Lower-Case: Aus dem englischem für "Kleinbuchstaben". Bezeichner werden als eine zusammenhängende Zeichenkette hintereinander geschrieben, während alle Buchstaben klein sind. Beispiele: nanosecondsinsecond, valueineuro, positionx, positiony
- Upper-Case: Aus dem englischen für "Großbuchstaben". Bezeichner werden als eine zusammenhängende Zeichenkette hintereinander geschrieben, während alle Buchstaben groß sind. Beispiele: NANOSECONDSINSECOND, VALUEINEURO, POSITIONX, POSITIONY
- Camel-Case: Bezeichner werden als eine zusammenhängende Zeichenkette hintereinander geschrieben, während jeder Anfangsbuchstabe eines Wortes groß geschrieben wird. Beispiele: NanosecondsInSecond, ValueInEuro, PositionX, PositionY
- Mixed-Camel-Case: Bezeichner werden als eine zusammenhängende Zeichenkette hintereinander geschrieben, während jeder Anfangsbuchstabe eines Wortes groß geschrieben wird, bis auf der erste. Beispiele: nanosecondsInSecond, valueInEuro, positionX, positionY
- Underscored: Wörter in Bezeichnern werden durch einen Unterstrich _ voneinander getrennt. Beispiele: nanoseconds_in_sekunde, value_in_euro, position_X, position_Y .
Underscored kann in Kombination mit anderen Begriffen verwendet werden. So z.B. die in C verwendete lower-case-underscored Schreibweise für Variablen: nanosekunden_in_sekunde, wert_in_euro, position_x, position_y.
Konventionen in Java
Da wir im Praktikum des Modules Java programmieren, wollen wir, dass Sie folgende Konventionen einhalten:
- Klassennamen werden im Camel-Case notiert. Beispiele: String, MeinProgramm, AbstractSingletonFactoryBean
- Variablen- und Attributsnamen werden im Mixed-Camel-Case notiert. Beispiele: x, result, processRunning
- Methodennamen werden im Mixed-Camel-Case notiert. Beispiele: calculate(int x, int y), doSomething(), cleanupAtShutdown()
- Klassenweite Konstanten werden im Underscored-Upper-Case notiert. Beispiele: PI, NANOSECONDS_IN_SECOND, ARRAY_SIZE
Dies sorgt dafür, dass alles was einen Wert besitzt schnell durch den Kleinbuchstaben am Anfang erkannt werden kann, während von Typen mit Großbuchstaben unterschieden werden kann. Konstanten nehmen dabei eine traditionelle Sonderrolle ein, damit sie schnell als solche identifiziert werden können.