****Wenn du dich jemals bei einem Projekt, bei dem es brennt, durch einige tausend Zeilen Code von einem Entwickler durchgearbeitet hast, der ausschließlich Variablennamen wie a, b, c, ..., aa, ab, ac, ... benutzt hat (und dabei selbst durcheinander kam), würdest du es vermutlich verstehen. Die lange Schreibweise ist im Prinzip nur das gegenteilige Extrem. Ich verwende sie halt zur Dokumentation. char *deutschesWort, *fremdesWort; erscheint mir weniger fehlerträchtig als char *dw, *fw; /* dw: deutsches Wort, fw: fremdes Wort */ . Dafür nehme ich schon gerne etwas mehr Schreibarbeit in Kauf. Variablen wie i, x, ... verwende ich im Normalfall nur als Laufvariablen o.ä. . |
****Wenn du dich jemals bei einem Projekt, bei dem es brennt, durch einige tausend Zeilen Code von einem Entwickler durchgearbeitet hast, der ausschließlich Variablennamen wie a, b, c, ..., aa, ab, ac, ... benutzt hat (und dabei selbst durcheinander kam), würdest du es vermutlich verstehen. Die lange Schreibweise ist im Prinzip nur das gegenteilige Extrem. Ich verwende sie halt zur Dokumentation. char *deutschesWort, *fremdesWort; erscheint mir weniger fehlerträchtig als char *dw, *fw; /* dw: deutsches Wort, fw: fremdes Wort */ . Dafür nehme ich schon gerne etwas mehr Schreibarbeit in Kauf. Variablen wie i, x, ... verwende ich im Normalfall nur als Laufvariablen o. ä. . |
:[[Code] |
: [[Code] |
:::Wenn man kompatibel zu verschieden Sprachen bleiben muß, steht overloading natürlich nicht zur Verfügung. Dann würde ich die Namen wie folgt wählen: :[[Code] |
::: Wenn man kompatibel zu verschieden Sprachen bleiben muß, steht overloading natürlich nicht zur Verfügung. Dann würde ich die Namen wie folgt wählen: : [[Code] |
:::Ich würde sogar auf den Size-Parameter ganz verzichten wollen. Als Regel könnte man formulieren: :::Alle Parameter die für eine Routine notwendig sind, werden nicht in den Name der Routine integriert, es sei denn, sie werden benötigt, die Aufgabe der Routine zu beschreiben. |
::: Ich würde sogar auf den Size-Parameter ganz verzichten wollen. Als Regel könnte man formulieren: ::: Alle Parameter die für eine Routine notwendig sind, werden nicht in den Name der Routine integriert, es sei denn, sie werden benötigt, die Aufgabe der Routine zu beschreiben. |
::::: FileReadBuffer ist ja noch okay. Die Argumente, das "File" vorne stehen soll, kann ich schon nachvollziehen (man sollte aber dann noch anmerken das copyStringBuffer unter diesem Gesichtspunkt Mist ist). Mich stört mehr, dass Funktionsvarianten einfach um den Namen der zusätzlichen Parameter ergänzt werden sollen. Die Namen die dabei entstehen können verwirrend sein. ReadBufferSize sollte eine Puffergrösse einlesen und nicht n-Bytes in einen Puffer. Ich finde den ProgrammierStilAlpha übrigens ganz gut (speziell bezogen auf seine Ansprüche). Eine theoretische Diskussion ist wahrscheinlich gar nicht sinnvoll. Besser wäre es konkrete Probleme bei der Namensvergabe im Projekt zu diskutieren und deren Ergebnisse als Beispiele oder Ausnahmen bei den entsprechenden Regeln zu hinterlegen. hz |
: Die erste Struktur ist 64 Byte groß und beschreibt den Inhalt der lexikalischen Datei, die zweite Struktur ist 14 Byte groß und beschreibt die einzelnen Einträge in der lexikalischen Datei. Dazu kommen noch ein paar Blöcke mit den Worttypen, den Gebieten, den globalen Attributen und natürlich den Beschreibungen der Worte. Diese Daten werden genauso in die Datei geschrieben, wie sie im RAM vorliegen. Ferner können die Dateien entweder auf verschiedenen Rechnern lokal vorliegen oder aber auch auf einem zentralen Server, wo sie per NFS o.ä. in einem großen Netzwerk verfügbar wären. |
: Die erste Struktur ist 64 Byte groß und beschreibt den Inhalt der lexikalischen Datei, die zweite Struktur ist 14 Byte groß und beschreibt die einzelnen Einträge in der lexikalischen Datei. Dazu kommen noch ein paar Blöcke mit den Worttypen, den Gebieten, den globalen Attributen und natürlich den Beschreibungen der Worte. Diese Daten werden genauso in die Datei geschrieben, wie sie im RAM vorliegen. Ferner können die Dateien entweder auf verschiedenen Rechnern lokal vorliegen oder aber auch auf einem zentralen Server, wo sie per NFS o. ä. in einem großen Netzwerk verfügbar wären. |
Übersetzbare Bezeichner |
![]() |
|
![]() |
|
Dictionary |
Konsistente Funktionsnamen |
![]() |
|
![]() |
|
Verwendung einer GUI-Beschreibungssprache |
Alignment bei Strukturen |
![]() |
|
![]() |
|
![]() |
|
Keine unübertragbaren Sprachelemente |
![]() |
|
Zu Exceptions |
Verschoben nach ExceptionsDiskussion
Allgemeine Anmerkungen |
Zunächst sollte geklärt werden, ob diese Standards für die Programmierung von Bibliotheken (bzw. eines Servers) oder für front-ends verwendet werden soll. Es sollte da verschiedene Standards geben, das back-end wird wohl kaum mit Perl oder Basic programmiert, warum also darauf Rücksicht nehmen? -- mb
Binäre Dateiformate |
Strukturierte Programmierung |
![]() |
|
![]() |
|