Sauberes Programmieren // Varibeln mit Prefix



  • unter c braucht man das weil man ständig selber wissen muss was das für ein typ ist
    z.b. bei printf
    aber unter c++ gibts templates die machen das automatisch und besser
    und bei andern typen unstimigkeiten meldet sich der compilier sowieso



  • das hat jetzt aber nichts mit Templates zu tun ...



  • Original erstellt von Bashar:
    das hat jetzt aber nichts mit Templates zu tun ...

    das ich nicht bei cout den typen angeben muss ja, aber das ich duch templates nicht mit void * arbeiten muss nein



  • Original erstellt von Helium:
    Das mit den Prefixen ist in einer OO sprache wohl auch eher schwer, oder? Man müsste sich ja millionen von eigenen Prefixen ausdenken.

    was zur Hölle programmierst du ?



  • Original erstellt von 1ntrud0r:
    was zur Hölle programmierst du ?

    Objekt Orientiert.

    Wiviel Klassen hat man? 20? 30? naja, das variiert. aber du kannst nicht für jede Klasse n prefix erfinden... da wird man ja bekloppt.



  • was zur Hölle programmierst du ?

    Also unser Projekt (ein Warenwirtschaftssystem) hat ueber 150 Klassen.

    mfg
    v R



  • Hi,

    also bei uns in der Firma wird für die eingebauten Typen (int, float, ...) ein Präfix verwendet. Ebenso für die Windows Controls (z.B. edt für Editbox). Bei den Selbstgeschriebenen Klassen gibt es keine eindeutige Vorschrift, aber Pflicht ist mindestens ein sinnvoller Name.

    MFG
    Kai



  • Kein Mensch verwendet heutzutage noch ungarische Notation zusammen mit C++ Code.

    Woher hastn das? Nur weil viele sagen, dass es nicht sinnvoll ist, heißt das noch lang nicht, dass es keiner verwendet. Auch wenn ich oo programmiere ist in c++ noch lange nicht alles ein Objekt. Und bei eingebauten Typen isses in c++ genauso sinnvoll respektive sinnlos wie in C. Und auf das p vor Zeigern seh ich auch nur Leute verzichten, die sich immer voll auf Ihre Codevervollständigung verlassen. Dann geht man stillschweigen davon aus, dass jeder, der Editor mal lesen will auch ne gute Codevervollständigung hat.

    Die Präfixe machen den Code zwar optisch vielleicht nicht schön (aber 'std::' tut das auch nicht) , aber beim Lesen hindern tun sie wohl kaum und wer es gewohnt ist, schätzt es.

    Natürlich kann man die Notation bei Objekten nicht durchziehen, aber man kann ja ein bisschen improvisieren, wo's sinnvoll erscheint:
    z.B. ap für auto_ptr, itr für Iterator und itrp für einen Iterator, der selber wieder auf einen Zeiger zeigt.



  • Original erstellt von kartoffelsack:
    Woher hastn das? Nur weil viele sagen, dass es nicht sinnvoll ist, heißt das noch lang nicht, dass es keiner verwendet.

    im allgemeinen hält man sich daran was die Gurus sagen...

    Die Präfixe machen den Code zwar optisch vielleicht nicht schön (aber 'std::' tut das auch nicht) , aber beim Lesen hindern tun sie wohl kaum und wer es gewohnt ist, schätzt es.

    wir haben letztens eine Beisprechung bezüglich Code Design gehabt.
    das Resultat war, dass sich alle Programmierer einstimmig gegen ungarische Notation ausgesprochen haben.

    Natürlich kann man die Notation bei Objekten nicht durchziehen, aber man kann ja ein bisschen improvisieren, wo's sinnvoll erscheint:
    z.B. ap für auto_ptr, itr für Iterator und itrp für einen Iterator, der selber wieder auf einen Zeiger zeigt.

    lpfnWndProc ist das beste Beispiel für den unsinn von ungarischer Notation.
    ap? auto_pointer oder array of pointers?
    itrp? Zeiger auf iterator oder iterator auf zeiger?

    soviele Fragen... da ist es noch lange nicht klar.
    Wenn man funktionen kurz hält braucht man das alles sowieso nicht, da man dann die deklaration der variable dann ja eh sieht.
    und klassenmembervariablen gibts nur so wenige, dass man den überblick leicht behalten kann.

    bzw. hat die ungarische Notation eine schwachstelle: funktionen. was geben die zurück? da muss man immer nachsehen.

    aber wenn jemand ungarische Notation verwenden will, bitte, ich hindere niemanden daran - ich kann nur Gründe dagegen nennen.



  • Original erstellt von Dimah:
    unter c braucht man das weil man ständig selber wissen muss was das für ein typ ist
    z.b. bei printf

    Du musst auch in C++ wissen, was für ein Typ das ist. Du musst immer wissen, was für ein Typ 'das' ist. Man kann mit einem int nunmal nicht so umgehen, wie mit einem Datenbankinterface.

    [Ich programmiere zB mit einem Compiler. Der sagt mir, wenn ich den falschen Typen mit dem Namen erwische. Auch bei printf.]

    Die UN ergibt genau dann Sinn, wenn man die Typen _ignoriert_, beispielsweise bei einer string2int-Funktion wo man gerne zwei Variablen 'num' nennen will.

    [ Dieser Beitrag wurde am 04.03.2003 um 17:40 Uhr von Daniel E. editiert. ]



  • also so richtig Probleme zu wissen was fürn typ ich programmiert hab hatich nochnie...... grösstenteils logisch das name kein int und hausnummer kein string ist.
    Aber wenn jemand anders dann dadrangesetzt wird macht das schon Sinn denkich, nur dumm wenn aus dem short dann doch mal ein long werden soll nachdem man ihn 100 mal irgendwo benutzt hat.



  • Ich finde, dass man seinen eigenen Style darin entwickeln sollte (natürlich nur soweit, dass es jeder andere auch versteht). Meiner Meinung nach ist es leserlicher bei den Standardsachen wie int (i oder n), bool (b oder f) oder string (str oder sz) einen Prefix zu verwenden, da man sonst schnell den Überblick verliert. Für Klassen benutze ich meistens keinen einbuchstabigen Prefix sondern ein Wort (z.B. m_editEingabe oder m_fileOpen). Ist einfach leserlicher. Ich glaube nicht, dass irgendwer ohne gewisse Regeln programmiert. So ziemlich jeder schreibt ein p vor den Pointer oder ein "m_" vor Membervariablen... Wenn nicht sind IMHO die anderen Leute arm dran die später mal mit dem Code arbeiten müssen... Dann muss man nämlich bei jeder Variable nachgucken ob Pointer oder nicht, Member oder nicht, Global oder nicht usw. 🙄



  • Woher hastn das? Nur weil viele sagen, dass es nicht sinnvoll ist, heißt das noch lang nicht, dass es keiner verwendet.

    Ich verwendete in meiner Aussage das Stilmittel der Übertreibung um den Punkt der Aussage deutlicher zu machen.

    Mir ist durchaus bewusst, dass der ein oder andere nach wie vor die ungarische Notation benutzt. Das allein macht sie allerdings keinesfalls besser.
    Es fahren auch einige Menschen Auto nach dem sie Alkohol konsumiert haben.
    Und es programmieren auch Leute Fortran in Prolog.



  • ich kann nur Gründe dagegen nennen.

    Dann nenn sie auch. 🙂

    Was ist an lpfnWndProc schlecht oder Unsinn?



  • Und auf das p vor Zeigern seh ich auch nur Leute verzichten, die sich immer voll auf Ihre Codevervollständigung verlassen. Dann geht man stillschweigen davon aus, dass jeder, der Editor mal lesen will auch ne gute Codevervollständigung hat.

    quatsch, ich lese eine Menge Source von verschiedenen Open Source Projekten, die idr. von den meisten Leuten mit vi(m) oder dem emacs geschrieben werden (oder ähnlichen Editoren), die per default keine schöne Codevervollständigung haben und ich habe noch nie in so einem Projekt ungarische Notation oder vergleichbares entdeckt.

    Encoding the type of a function into the name (so-called Hungarian
    notation) is brain damaged - the compiler knows the types anyway and
    can check those, and it only confuses the programmer. No wonder
    Microsoft makes buggy programs.
    -Linus Torvalds in "Linux Kernel Coding Style" http://www.purists.org/linux/

    [ Dieser Beitrag wurde am 04.03.2003 um 20:39 Uhr von kingruedi editiert. ]



  • Original erstellt von HumeSikkins:
    Nur mal so als winzig kleine Anregung:
    [url=http://www.objectmentor.com/resources/articles/naming.htm

    ]http://www.objectmentor.com/resources/articles/naming.htm[/QB][/QUOTE][/url]

    If you can't pronounce it, you can't discuss it without sounding like an idiot. "Well, over here on the bee cee arr three cee enn tee we have a pee ess zee kyew int, see?"

    ROTFL, wie gut ich das kenne!
    Passiert mir leider auch sehr oft... und ich klinge wohl auch ab und zu
    wie ein Idiot, wenn ich ueber meinen Source rede 😉

    cu, Daniel



  • Also ich hab neu angefangen zu Programmieren 😉
    soll ich mir angewöhnen bei nicht funktionen usw ungarisch zu notieren? (das mit den long und short überleg ich mir selbst noch ;D)

    cya Marco



  • am besten du läßt es gleich ganz bleiben



  • jo, lass es sein. an member ein _ zu haengen ist relativ weit anerkannt, typen gross, vriablen und funktionen klein, anfangsbuchstaben von woertern im namen gross.

    Klasse
    MeinStruct
    objekt
    eineZahl
    funktion
    memberVariable_
    memberFunktion



  • Java Style
    und immer brav

    for (bla) {
    und nicht
    for (bla) 
    {
    

Anmelden zum Antworten