Rolf B: Schreibt PSR 12 vor wie ein Variablenname aus zu sehen hat?

Beitrag lesen

Dieser Beitrag wurde gesperrt: Das Thema artet aus und ist hinreichend diskutiert worden.

Hallo T-Rex,

wie schon herausgestellt, machen die PSRs dazu keine Aussage.

Aber ich.

Was Du da verwendest, ist eine Form der Ungarischen Notation. Aber du verwendest sie falsch, und bist damit in zahlreicher Gesellschaft.

Wie der Wikipedia-Artikel schildert, hatte Charles Simonyi, der diese Notation bei und für Microsoft erfand, damit eine semantische Ergänzung zu Variablennamen im Sinn. Es ging ihm niemals um den deklarativen Datentyp.

Aber die Betriebssystemabteilung von Microsoft sah das anders, sie waren vermutlich noch zu assemblerlastig und heilfroh, eine minimale Typisierung einführen zu können. Und so bekamen wir Namen wie hFile (was ok ist), aber dann auch dwCounter (dw = double word, ein 32-bit Wert) - und das ist in einer Hochsprache genauso sinnlos wie $arWords.

Dass eine Variable ein Array ist oder ein Integer oder ein String, weiß man zumeist relativ einfach. In C/C++ weiß es schon der Compiler und die Intellisense im Editor - in PHP nicht unbedingt, aber neuere Versionen von PHP unterstützen Typdeklarationen, nicht nur Type Hints, und geben dem Editor damit auch klare Hinweise. Für ältere PHP Versionen gibt es phpdoc Kommentare, mit denen man Typen deklarieren kann. Anständige Editoren verstehen auch phpdoc.

Was davon nicht abgedeckt wird, ist die Bedeutung des Strings oder des Integers in einer Variablen. Ist es ein Zähler, ein Index, ein Name, ein Key, ein DB-Handle, eine File-Ressource? Das war das Problem, das Simonyi lösen wollte.

Dein ar-Präfix finde ich deshalb komplett überflüssig, genauso wie der Namen $array für eine Variable sinnbefreit ist. Hier im Thread ist das natürlich nur ein Demo-Name, aber ich meine, von Dir solche Namen auch schon in Codeauszügen gesehen zu haben. Vielleicht irre ich mich ja auch. Wie auch immer - wenn Du eine Datenbankzeile hast, dann nenne die Variable $row. Nicht $array, nicht $arRow und schon gar nicht $arArray. Wenn Du einen Namen mit explode in Teile zerlegt hast, dann nenne das beispielsweise $nameParts (oder $name_parts). Wenn Du zählen willst, wieviele Vokale in einem Namen stecken, zähle das in $cVokale oder deutscher $zVokale - das war Simonyis Idee: c für Count (oder z für Zähler).

Guck in den verlinkten Wikipediaartikel für weitere Informationen. Vor allem in den letzten Abschnitt, Kritik. Wenn Du auf mich kleines Licht nicht hören willst, dann vielleicht auf Koryphäen wie Robert C. Martin (Agile Manifest, Clean Code), Linus Torvalds (Git, Linux) oder Prof. Dr. Bjarne Stroustrup (Vater von C++).

Rolf

--
sumpsi - posui - obstruxi