Ungarische Notation für WinAPI-Programmierung in C
-
Ist die ungarische Notation auch für WinAPI-Programmierung mit C nicht empfehlenswert?
Für C++ wurde das ja schon mal hier diskutiert.
-
naja, auch unter C finde ich ungarische Notation nicht besonders Sinnvol.
Ich finde UN sorgt nicht dafür, dass ich weniger in die Doku gucken muss. Weil für UN muss ich ja schon in die Doku gucken, wie der Bezeichner lautet (oder denkt einer von euch, dass ich mit irgend welche komplizierten UN abkürzungen merken kann? da kann ich mir genauso leicht merken, was hinter dem Bezeichner für ein Typ steckt), wenn ich keine UN habe, dann muss ich vielleicht mal in einigen Fällen mich versichern, was das genau für ein Typ ist.
Beispiel, ich habe einen Zähler, für Bytes, die ich gelesen habe, von irgend einem Device.
In UN säh mein Code so aus
struct sdevice { //... unsigned long ul_bytes_read; }; char *ps_read(struct sdevice *sd_dh,char **pps_data) { //read bytes sd_dh->ul_bytes_read+=/*gelesene bytes*/ return *pps_data; }
was bringt mir das für ein Vorteil, dass ich weiss, dass der Zähler ein unsigned long ist? Keiner. Ich weiss, der Zähler hat eine Aufgabe, nämlich einen Vorzeichenlose Ganzzahl zu speichern. Das seh ich schon am Namen bytes_read. Ob das nun unsigned int, unsigned short oder gar unsigned byte ist, kann mir ja volkommen egal sein, solange der += Operator arbeitet. So steh ich eher vor dem Problem, dass ich den schönen Bezeichner dadurch ruiniere, dass ich eine kryptische Buchstaben Kombination davor stelle und wenn ich mir die so merken kann, dann kann ich mir auch den Typ merken. Also bringt es nichts an mehr Informationen, sondern eher mehr an Verwirungen. Gerade für Leute, die neu zu dem Projekt hinzu kommen, stellt sich ein Problem, weil man sich an eine zusätzliche kompliziertere Namensgebung halten muss (und UN ist ja nicht immer gleich).
Also UN bringt IMHO mehr Schaden als Nutzen.
-
Ich würde da eher die Frage stellen, ob WinAPI-Programmierung mit C empfehlenswert ist...