mikrocontroller.net

Forum: PC-Programmierung Notation (Ungarische Notation)


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe mich in den letzten Wochen mit der C Programmierung
beschäftigt. Verwendet Ihr im Code Notaionen wie z.B die Ungarische
Notation? Die Anwendung von Notationen kenne ich von der
Softwareentwicklung mit Delphi, oder Visual Basic, wo ich sie sehr
hilfreich fand, den Code quasi besser "lesbar zu gestalten".

Gibt es hier auch einen Standard für C mit der aktuellen Lib des
WinAvr.

Beispiel:

viele deklarieren Variabeln z.B. so:

  unsigned char Counter;


mit Notation könnte das evtl. so aussehen:

  unsigned char ucCounter;    /* das "uc" steht für unsigned char */


ist die Variable global deklariert könnte man sie evtl. so nennen:

  unsigned char gucCounter;   /* das "g" steht für global */


bei WinAvr Lib:

  uint8_t Counter;

könnte das so aussehen:

  uint8_t uiCounter;

oder global:

  uint8_t guiCounter;


Was haltet davon, oder benutzt Ihr bereits einen Standard?

Gruß

Peter

: Verschoben durch Admin
Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

ich verwende ebenfalls die Ungarische Notation. Sie deckt eine Menge
ab, aber eben nicht alles. Da kann man sich halt etwas ausdenken. Z.B.
für die Definition einer Struktur: strucMeineStruktur.

Grüße
Oliver

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich neige sogar dazu zu sagen: Die Benutzung von Notationen
unterscheitet den Profi vom Hobbyprogrammierer... ;-)

MfG
Andreas Jäger

Autor: Andre Groß (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
Ich verwende auch die ungarische Notation, nur mit einem Unterstrich
dazwischen..

also:

struct meinStruct_str
{
  unsigned char uc_meinChar;
} t_struct1;

Ich finde das macht die Sache noch ein bißl leslicher, auch wenn man
NOCH ein Zeichen mehr hat. ;-)

@Andreas

Da gebe ich dir vollkommen recht..

Andre

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist die ungarische Notation bisher nur in Visual-C++-Programmen
begegnet, ansonsten ist sie kaum verbreitet. Ich finde sie sinnlos und
unpraktisch, ist doch Unsinn dass wenn man den Typ einer Variable
ändert man auch den Namen ändern muss.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich halte die ungarische Notation für sehr wichtig und hilfreich.
Sobald die Projekte größer werden und man mit mehreren Leuten an eines
Software arbeitet hilft es, den Code schnell zu verstehen und man
blickt auch nach einiger Zeit noch durch den eigenen Code. Wenn man
gekappselt Programmiert, ist es auch kein Problem, wenn man einen Namen
ändern muß, da sowieso alles in einer Datei steht und man alles mit
Textersatz machen kann. Ich gehe persönlich und auch auf der Arbeit
noch einen Schritt weiter, und nehme ein Modulkürzel noch mit in den
Namen auf (bei statischen Modulvariablen und auch Funktionen). So weiß
man immer gleich, wo was zu finden ist und der Code ist leicht
verständlich.

Viele Grüße,
Ralf

Autor: Andreas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas Schwarz

Also für kleine überschaubare Programme (...1000 Codezeilen) lässt sich
darüber streiten. Aber wenn die Sache etwas umfangreicher wird
(>1000000 Codezeilen) ist es sehr Hilfreich, wenn der Typ einer
Variable schon am Namen zu erkennen ist und man nicht immer wieder
'nachsehen' muss. Insbesondere, wenn mehrere Programmierer an einem
Projekt arbeiten, ist es schon fast zwingend (wenn nicht sogar interne
Vorschrift) eine Notation zu verwenden.

Andersrum könnte ich ja sagen: Warum nicht die Variablen a1, a2, a3,
a4... nennen? Macht (fast) keiner, weil sprechende Namen halt das
Schreiben und Warten(!) eines Programmes einfacher machen. Und wenn die
Namen schon sprechen, dann doch bitte deutlich!

MfG
Andreas Jäger

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie Jörg schon im "Parallelthread"
(http://www.mikrocontroller.net/forum/read-2-37134.html) geschrieben
hat, wurde diese Notation von MS erfunden, und wird auch fast nur in
MS-Programmen verwendet. Ich habe sie jedenfalls noch nirgendwo außer
in MS-Beispielen und Visual-C++-Büchern gesehen, weder in großen Open
Source Projekten wie MySQL (>1000000 Zeilen Code) oder Linux, noch in
Appnotes von Compilerherstellern oder API-Dokus von anderen
kommerziellen Programmen.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

wenn ich heutzutage noch SW ohne Notation sehe, überkommt mich gleich
Gänsehaut. Wenn dann auch noch Einzelbuchstaben für Variable ( also ohne 
Andeutung was die Variable eigentlich macht ) benutzt werden, weis ich 
gleich das hier früher oder später ich die Hände über dem Kopf 
zusammenschlagen muß. Ich mache C-Software seit 20 Jahren und habe 
einiges gesehen. Und ich kann sagen wenn ein Programmierer der von 
vornherein ungarische Notation verwendet ( auch wenn das Programm noch 
so klein sei  sollte ) wird grundsätzlich eine überdachtere Lösung und 
daher weniger fehlerträchtige Software abliefern. Die Zeiten von ganz 
quick und richtig dirty sind vorbei da die SW-Systeme mittlerweile 
Ausmaße annehmen das selbst gestandenen Programmierern Angst und Bange 
wird. Deshalb ist Disziplin und da gehört ungarische Notation zum 
tagesgeschäft einfach dazu.
Das sieht man vorallem wenn es um Software geht die richtig 
Verantwortung übernimmt ( Automobil, Luftfahrt, Medizin ). Hier ist 
ungarische Notation erst der Anfang von weiteren Bestimmungen und 
Vorgaben um ein klares strukturiertes Systemm zu bekommen.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne ungarische Notation geht die Welt unter. Das muss mal ganz klar 
gesagt werden.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Toll, einen 6 Jahre alten Thread wieder ausgegraben...

Für jede Variable ist in C mit der Deklaration klar festgelegt welchen 
Typ sie hat. Wieso will man diese Information nocheinmal von Hand im 
Namen der Variable wiederholen? Sie ist bereits fest der Variable 
zugeordnet, und kann von einer modernen IDE auf Wunsch eingeblendet, 
farblich hervorgehoben, oder sonstwie interpretiert werden.

Wenn C-Programme mit ungarischer Notation weniger chaotisch sind, dann 
liegt das wohl weniger an der Notation selbst, als daran dass der 
Programmierer der sie verwendet offensichtlich irgend einem Coding 
Standard folgt, statt einfach wild drauflos zu programmieren.

Autor: P. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vor Allem zeigen die Beispiel oben schon, wie das Chaos nur vergroessert 
wird:

---
könnte das so aussehen:

  uint8_t uiCounter;

oder global:

  uint8_t guiCounter;
---

ui ist die Abkuerzung fuer user interface und gui fuer graphical user 
interface. Oder steht es doch fuer uint16 oder uint32?

Ich sitze hier an Code mit mehreren Millionen Zeilen Code und meine 
Probleme werden sicher nicht durch die ungarische Notation geloest...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch eine zeitlang ungarische Not. verwendet (so wie sie heute 
gerne verstanden wird *), habe sie aber wieder aufgegeben. Wenn eine 
Funktion chaotisch ist, dann ist sie es auch mit ungarischer Not. Das 
liegt in der überwiegenden Mehrzahl der Fälle aber nicht daran, dass die 
Datentypen der verwendeten Variablen nicht bekannt sind sondern an 
anderen bekannten Gründen: Funktionen zu lang, keine vernünftigen 
Variablennamen, inkonsistente Einrückengen, keine Blockkommentare, etc. 
Kurz und gut: Saustall im Code.

* ung. Not. so wie sie heute oft verstanden wird, also mit dem Datentyp 
als Präfix, ist eigentlich ein Missverständnis. Die ursprüngliche Idee 
war es, den Verwendungszweck bzw. welcher Art die Variable ist, als 
Präfix zu verwenden. Das hat aber nicht unmittelbar etwas mit dem 
Datentyp, also int long double etc. zu tun, sondern vielmehr mit dem 
logischen Kontext, in dem die Variable existiert, ob sie ein Pointer 
ist, ein Handle, ob der in dieser 3D-Punkt Variablen gespeicherte Punkt 
in absoluten Koordinaten ist oder in lokalen Koordinaten, ob ein Preis 
mit oder ohne Steuer dargestellt ist etc.
Diese Verwendung der ung. Not. hingegen ist sinnvoll und die setze ich 
auch liebend gerne und oft ein. Hier hat mir die ung. Not. schon oft den 
Tag gerettet, wenn es wieder mal galt auseinanderzuklamüsern, warum eine 
Geometrieoperation schief geht und sich herausstellte, dass wieder mal 
Äpfel mit Birnen, also Vektoren in verschiedenen Kooridnatensystemen 
miteinander verrechnet wurden.

Aber die Kennzeichnung uiIndex ist m.E. eine sinnlose Verschlechterung 
der Lesbarkeit, deren Nutzwert gegen 0 geht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.