Präfix

  • Allgemein

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

    Hi!

    Es würde mich mal interessieren, was ihr von Präfixen haltet. Ich persönlich verwende kaum welche, weil die mich mehr stören als sie mir weiter helfen; bevor ich mir vor jedem String ein "s" oder ein "str" antue (antue im Sinne von Variablen suchen), les ich mir die Deklaration durch. Ich setze viel mehr auf eindeutige Namen.

    Für numerische (Array-)Grenzen und Zählervariablen setze ich auf i, j, k, n, m und sowas, wie sieht das bei euch aus?


    so long...
    Andy
    Grundsätzlich benutze ich keine Präfixe, es sei denn, ich habe eine Variable die ich so benennen möchte, wie ein reserviertes Wort oder wenn ich zwei Variablen habe, die gleich heissen sollen (mit anderem Datentyp). Ich meine, Variablen kann man auch so benennen, dass ein Präfix unnötig ist, z.B.:

    Boolean:
    IsProtected
    HasValue

    Oder Zahlen:
    KundenNr
    CharCount

    Strings:
    MessageText
    UserName
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich für meinen Teil versuche wenn möglich immer Präfixe zu verwenden; und zwar aus dem selben Grund, aus dem ich auch meinen Quellcode auskommentiere: damit ich auch in zwei Jahren an sofort erkennen kann, was ich da veranstaltet habe. Wenn ich den Datentyp einer Variable sofort an ihrem Präfix erkenne, kann ich mir auch gleich viel besser vorstellen, was sie bezweckt.

    Natürlich gilt das nicht für Variablen wie i oder n, die man nur für Schleifen benutzt (wenn der Präfix allein schon länger ist als die Variable selbst, sollte man ihn besser weglassen: "inti"!) - aber das erkennt man ja auf den ersten Blick. Gerade bei weniger häufig genutzten Datentypen wie Boolean finde ich es nützlich, im Vorneherein zu wissen, was das für eine Variable ist.

    Vielleicht ist es auch nur eine irrationale Angewohnheit, aber das beliebte Gegenargument "ich brauche keine Übersicht in meinem Code, das Genie überblickt das Chaos!" halte ich einfach für Schwachsinn. Zum sauberen Programmieren gehört neben vernünftigen Select/Case-Anweisungen mMn eben auch das Auskommentieren des Quellcodes und das sinnvolle Benennen von Variablen - ob jetzt mit oder ohne Präfixe.

    Besonders nützlich sind die Präfixe, wie mir gerade auffällt, wohl in Projekten, in denen es mehrere Variablen mit unterschiedlichem Inhalt aber ähnlichen Namen gibt. Da ist es einfacher, statt "InhaltContainer1", "InhaltContainer2" und "InhaltContainer3" sie einfach "dblInhaltContainer", "intInhaltContainer" und "lngInhaltContainer" zu nennen.

    mfG

    Malcolm
    Hi!

    Hab hier jetzt 2 komplett unterschiedliche Meinungen :D

    Kommentieren ist natürlich sehr wichtig, da schließe ich mich deiner Meinung an, aber ich finde es unnötig das "Chaos" zu beseitigen, wenn man sich die Übersicht anders schafft ;)
    Ich verwende z.B. sehr ungern Select Case, weil ich das im Vergleich zu If-Then-ElseIf eher unübersichtlich finde. Ausnahmen sind jedoch sehr große Zweigstellen (alles über 4 Cases). Das Chaos bleibt aber halbwegs übersehbar, weil ich statt endlose If-Verschachtelungen lieber gut kommentierte, vereinzelte Ifs habe, die in einem Exit Sub/Function enden :)

    Das man Variablen mit gleichem / ähnlichen Inhalt, jedoch anderem Datentyp irgendwo mit einem Präfix / Suffix versieht ist natürlich klar. Bestes Beispiel wär glaub ich Zahl = x : sZahl = Format("...", x)

    Würd mich noch interessieren, wie schwer oder leicht es dir fällt immer n int davor zu schreiben. Ich hab das einige Zeit lang versucht (so ziemlich in meinen Anfängen, wo ichs auch richtig nötig hatte) und irgendwie nie so richtig geschafft - irgendwann war doch wieder n Chaos in der Benennung (bunt durchgemischt).


    so long..
    Andy
    für Variablen benutze ich keine Präfixe

    ich benutze "Präfixe" für Steuerelemente :]

    z.B.

    cmdend <- für CommandButton End
    cmdsearch <- für CommandButton Suchen

    wenn ich i-was an dem Steuerelement verändern will oder die funktion des Steuerelements i-wo anders aufrufen möchte, komme ich schneller dran

    und wenn man solche "wechselnde Designs" für die Programme erstellt, wie ich mag, dann ist es leichter alle Button aufzurufen

    braucht man nur "cmd" einzutippen und da werden alle Buttons von VB-Editor angezeigt.

    Bei Variablen halte ich nicht viel davon
    ich halte das so wie nikolai.
    präfixe bei variablen: nein
    präfixe bei steuerelementen: ja

    aus dem gleichen grund wie er es schon sagte.


    bei variablen versuche ich denen immer einen eindeutigen namen zu verpassen und dann klappt das (meistens) schon. schlimmsten falls muss ich eben die maus zwei sekunden über die variable halten und dann seh ich schon den typ :)
    @Mad Andy

    Das Benennen geht bei mir mittlerweile automatisch "von der Hand". Früher musste ich noch überlegen, aber mittlerweile ist es Standard, ein 'int' bei Integern davorzuschreiben, darüber mache ich mir keine Gedanken mehr.

    If/Else ist meiner Meinung nach weder übersichtlicher als Select/Case, noch hebt es sich sonst durch irgendeinen Vorteil hervor - außer dass man die If/Else-Entscheidung besser in einer Zeile unterbringen kann als die Select/Case-Entscheidung, also durch einen rein ästhetischen Vorteil. Ich benutze Select/Case meistens aus Sicherheitsgründen, zum Beispiel bei Passwort-Abfragen oder Laufzeitbeschränkungen, die ich in mein Programm einbaue. Denn If/Else-Blöcke können mit Disassemblern wesentlich einfach aufgespürt (und geNOPt) werden als Case/Select-Blöcke.

    In unwichtigen Fällen, um einfache Entscheidungen zu treffen, greife ich natürlich auch auf If/Else zurück, aber eben nicht bei 'wichtigen', bzw. Sicherheitsrelevanten Entscheidungen, oder bei solchen, bei denen mehr als zwei Optionen zur Auswahl stehen. Es ist nicht so, dass ich auf Biegen und Brechen Select/Case benutze, nur halte ich es eben für sinnvoller.

    mfG

    Malcolm

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Malcolm“ ()

    Hi!

    Also das Select Case find ich nich so schön im Quelltext (do with the flow), weils die Form zerstört: Nach nem Case ist die nächste Zeile eingerückt, es gibt aber keine Zeile, die dann nicht eingerückt ist, sondern es kommt das nächste Case. Nach dem Letzten Case kommt dan ein Sprung von 2 TABS, was ich auch nicht "schön finde". Folgendes Beispiel sieht auf den ersten Blick richtig sauber aus, stell dir aber mal vir die blubb-blöcke haben Leerzeilen dazwischen, man kennt sich garnicht mehr aus. Ist meine Meinung - ich will dich nicht von deiner Methode abhalten ;)

    VB.NET-Quellcode

    1. Select Case
    2. Case x
    3. blubb
    4. Case y
    5. blubb
    6. Case z
    7. blubb
    8. End Select



    Für Sicherts-Dinge (gegen Hex und Memory freeze/manipulation) verwende ich Grundsätzlich entweder Aliase, also nicht 1 und 0 / true und false sondern irgendein Wert, der berechnet wurde:
    m = n * 2
    m = n + 7
    m = n * 3
    In der Datei steht dann 0 und 1 und im Quellcode 21 und 27 o.Ä.
    Oder den Wert auf mehrere Variablen aufteilen ist auch nicht blöd ;)
    Das wichtigste ist und bleibt, dass man beim "debuggen" nicht versteht, was abgeht (sinnloses hinundherkopieren und verschieben von Variablen z.B.)


    so long..
    Andy
    Um meinen Senf auch noch beizugeben:
    Ich bin SEHR für sauberen Code, wenn ich auf Arbeit Quellcode sehe mit tausenden Zeilen wo nix ordentlich eingerückt ist oder wahllose Abkürzungen als Variablennamen verwendet werden oder redundante Quellcodezeilen auftauchen, die man hätte in Funktionen oder Schleifen viel kürzer schreiben könnte, dreht sich einem der Magen um!

    Daher sollte man(n):
    - immer "Select Case" verwenden, wenn es denn geht
    - Objekte / Steuerelemente sollten mit dem Präfix "my" beginnen
    - Arrays oder Listen sollten in Mehrzahl benannt werden, also mit "s" enden
    - Präfixe nur mit Legende oder in Langform
    - Exit und Goto sind tabu
    usw
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Damit man eben sofort sieht, dass es sich um ein Objekt handelt, das zum aktuellen Objekt gehört (Aggregation, Assoziation usw). Was ist aussagekräftiger "response" oder "myResponse" ? Du weißt sofort das es eine Response-Klasse gibt und kannst alle anderen Datentypen-Rätselraten sparen.

    Kann gleich noch ergänzen:

    Boolsche Variablen/Funktionen sollten immer mit dem Präfix "is", "has" oder "can" anfangen.
    Bearbeitungsfunktionen sollten immer mit "get" bzw "set" anfangen...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Ich meinte auch eher Objekte, aber man sollte zwischen Steuerelementen und Objekten keinen Unterscheid machen, da dies im Grunde das Gleiche ist. Und "cmdOK" würde ich lieber "myOkButton" nennen, aber das ist jedem selbst überlassen...
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Wäre das nicht eher was für Off-Topic?

    Ich nutze Präfixe bei Objekten immer und bei Variablen, welche doppelt aber in verschiedenen Typen vorkommen. Select Case nutze ich genau so wie If Else ElseIf Endif. Das Entscheide ich kurzfristig, je nachdem, was mir sinnvoller erscheint. Goto und Exit nutze ich auch ab und zu, wenn es eine Function oder Sub abkürzen kann, spart den Rattenschwanz bei Select Cases oder Ifs. Vielleicht, weil ich es vom Assembler gewohnt bin (jmp...).
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „peterfido“ ()

    Original von peterfido
    Wäre das nicht eher was für Off-Topic?


    Nö, wieso? Wir diskutieren doch über ein Programmierthema und tauschen unsere Erfahrungen aus. Also zu 100% On-Topic.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich habe das eher als eine Art Umfrage gesehen, da hier ja nicht wirklich jemandem ein Programmierproblem gelöst wird und die "Frage" von einem von mir als "zu Fortschrittlich für solch eine ´Frage´" gewertet wird.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hi!

    Das Hauptforum ist auch für allgemeine Programmierdinge und -Fragen offen. Es geht hier nicht um ne Abstimmung, sondern interessiert es mich, wie weit es verbreitet ist und ob man sich das vielleicht angewöhnen sollte (z.B. wegen Zusammenarbeit).

    Viele Projekte teilt man sich mit anderen Leuten.. Sei es ne Zusammenarbeit, Open-Source oder "Wartungsarbeiten" an nem alten Code.
    Es scheint aber so als wären die schlauen Sprüche aus Büchern, dass das so unbedingt notwendig ist, aus der Luft gegriffen...


    so long..
    Andy

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mad Andy“ ()

    Notwendig sind Präfixe mit Sicherheit nicht, denn die Programme laufen auch so. Es ist halt übersichtlicher und man findet sich schneller zurecht, hat aber dadurch mehr Tipparbeit. Da Menschen ja Inividuen sind, ist es aber individuell zu handhaben... Was ich aber nicht mache, sind Umlaute in den Variablen oder Namen von Objekten zu nutzen.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Original von peterfido
    Was ich aber nicht mache, sind Umlaute in den Variablen oder Namen von Objekten zu nutzen.


    Aus einem bestimmten grund? ich weiß nämlich nicht immer so recht, ob ich jetzt statt ä ae schreiben sollen oder nicht. meistens entscheide ich mich dann doch für ä, da ich dann beim benutzen der/des variable/steuerelement/sub/function nicht dauernd umdenken muss. oder können dadurch probleme entstehen? wenn das programm erstmal kompiliert ist, ist es doch egal oder?