Coding Conventsions: Datentypen von Variablen und Alternative zum CamelCase

Jeder Programmierer entwickelt mit der Zeit seinen eigenen Programmier-Stil. Hiermit will ich jetzt einfach anfangen meine eigenen Konventionen der Menschheit kundzutun. Heute geht es um die Bezeichnung von Variablen.

Im Gegensatz zu den meisten Programmierern finde ich CamelCase (also AneinanderReihenVonWörternOhneLehrzeichen WobeiEinNeuesWortDurchEinenGroßbuchstabenGekennzeichentIst) einfach grauselig und unlesbar. Das liegt sicherlich auch daran, dass ich hauptsächlich aus der PHP-Ecke komme.
Es lässt sich aber nicht abstreiten, dass es immer wieder Verwirrungen gibt, weil zwischen UpperCamelCase (also einem Großbuchstaben als erstem Zeichen) und lowerCamelCase (selbsterklärend) unterschieden wird.
Ganz furchtbar wird das dann, wenn innerhalbe eines Projektes zwischen den beiden Varianten gemischt wird (zB Klassen upper- CamelCase und alle anderen Bezeichner lower CamelCase). Wenn dann noch Namens-Bezeichner als Prefix dazukommen (intCounter) ist das Chaos komplett.

Daher ziehe ich die Methode mit Unterstrich vor. Hier mal der Vergleich:
Code: Alles auswählen

$this_is_a_variable 
= "foo";

$thisIsAVariable = "bar";


Ich glaube, es ist unzweifelhaft, dass die erste Variante um einiges lesbarer ist (aber okay, ich gebe zu, es ist letztlich Geschmacksache).
Was ich mir allerdings zwecks sauberem Programmierstil schon immer aneignen wollte ist die Integration des Datentypes im Bezeichner, ähnlich der ungarischen Notation. Das kann zwar Kommentare nicht ersetzen, spart einem aber so manchen Frust, wenn man nach Jahren versucht den eigenen Code zu verstehen (ich glaube jeder Programmierer hat sich schonmal die Frage gestellt “Was zum Geier habe ich da damals zusammengehackt??“). Und wenn es schnell gehen muss, vergisst man Kommentare schonmal… Hat man sich eine bestimmte Notation aber erstmal angewöhnt, benutzt man die auch in hektischen Zeiten autmatisch.
Aus diesem Bedürfnis heraus habe ich dann meine eigene Schreibweise (die dave_notation ;) ) entwickelt, welche aus dem Bezeichner mit Unterstrichen und einem Suffix mit dem Typ in Großbuchstaben besteht:
also:
Code: Alles auswählen

$counter_INT 
= 254;
$text_STR = "foobar";
$data_grid_ARY = array("bla" => "blubb");
$flag_BLN = false


Hier sehe ich eine Menge Vorteile (gerade im Gegensatz zum CamelCase)

  • mich interessiert in erster Linie WAS in einer Variable enthalten ist. Welchen Typ sie hat, also WIE es gespeichert wird, ist erstmal eher uninteressant, daher ist diese Variante wesentlich sinnvoller als ein Prefix.
  • es lässt sich natürlicher schreiben. Variablen wie $data_array oder $search_string sind nicht selten und entsprechen auch viel mehr dem natürlichen Sprachgefühl. Also wird daraus einfach $data_ARY und $search_STR.
  • daraus ergibt sich auch, dass man - richtig angewandt auch Platz sparen kann.
  • man sieht durch die großgeschriebenen Datentypen auf den ersten Blick, welcher Teil der eigentliche Name ist und wo der Typ des Bezeichners beginnt.
  • es gibt keine Verwirrung mit Groß- und Kleinschreibung und letztlich weniger Vertipper

Rein optisch fühlt es sich erstmal komisch an - und ich denke, dass sich die meisten Coder mit Händen und Füßen gegen diese Notation wehren werden. Aber ich praktiziere das jetzt schon seit einiger Zeit und es hat im Gegensatz zur CamelCase keinerlei Nachteil.
Kann nur empfehlen das mal ein paar Wochen auszuprobieren. Das Argument “Wir machen das so, weil wir das schon immer so gemacht haben” sollte jedenfalls in der IT-Branchen nicht wirklich schlagend sein.

Hier mal eine Liste mit den Datentypen
Code: Alles auswählen
_INT: Integer
_STR: Strings
_CHR: Character
_BLN: Booleans
_FLT: Float
_ARY: Arrays
_OBJ: Objekte
_DTT: Zeit/Datumsangaben (DaTeTime)
_TST: Timestamps
_SQL: SQL-Statements
_HTM: HTML-Code


Das lässt sich natürlich beliebig erweitern. Ausnahmen benutze ich bei Dingen die eigentlich immer wieder in gleicher Form vorkommen:
Code: Alles auswählen

$sql
; //SQL-Statements
$result; //SQL-Results
$i, $j, $k; //Zähler für Schleifen
 


Bevor Fragen kommen: $sql benutze ich für den Hauptquery. Auf das Prefix greife ich nur zurück wenn sich Querys aus mehreren Teilen zusammensetzen:
Code: Alles auswählen

<?php
$sql 
= "SELECT *
            FROM my_table
            WHERE 1";
$result = $db_OBJ->sql_query($ql);

$from_SQL = "my_table mt, your_table yt";
$where_SQL = "mt.bla = ´blubb´";

$sql = "SELECT *
            FROM $from_SQL
            WHERE $where_SQL";
$result = $db_OBJ->sql_query($ql);
?>





loading




BBcode für diesen Artikel:


HTML-Code mit Link zu diesen Artikel:
Diese Seite zu Mister Wong hinzufügen   Delicious