namensgebung für variablen/funktions/typnamen:Kriterien
-
jo, ich hab das problem, dass ich es irgendwie nicht schaffe, sinnvolle kurze namen zu vergeben.
wenn bei mir in einer funktion der rückgabeparameter vom typ "vector" ist, dann nehm ich auch meistens eine variable mit dem namen "vector"-einfach weil mir nichts bessres einfällt...und wenn ich dann ne funktion habe, die sehr spezialisiert ist, dann hat sie meist solch schlangennamen wie:getGroupMemberWithElement...
wie macht ihr das? nach welchen Kriterien benennt ihr eure variablen/typen/funktionen?
-
getGroupMember() ist IMHO Unsinn, weil dann die Funktion eher eine Methode der Klasse Group sein soll und dann getMember() heisst.
-
Hallo,
in C++ ist das noch relativ einfach. Jede Klasse kann eine ::GetData Funktion haben. Schwieriger wird es dann immer in C (programmiere da relativ viel auf Arbeit). Und da werden die Namen auch immer etwas länger. Ich kürze relativ viel ab. Aus count wird cnt, Aus data wird dt usw. In meinem Fall ist das noch OK, da nur ich mit meinem Code arbeiten muss. Wenn es aber ein Projekt mit mehrern muss man sich schon eher einigen.
Wie man letztendlich arbeitet, muss jeder selbst entscheiden. Manche kommen mit langen Namen besser klar als mit kürzeren. In größeren Firmen gibt es meist feste Regeln für die Namensgebung.
-
Ich mach mir die Funktionen so klein, dass nur ein oder zwei Wörter die Aufgabe treffend bezeichnen. Und get oder so was findest du bei mir gar nicht. Was ich häufig mache, ist einen deutschen Begriff suchen und den dann ins Englische übersetzen.
-
Bei mir steht auch niemals im Namen, was für ein Typ eine Variable ist. Einzige Ausnahme: iter (meistens ne Variable, die nur zwei Zeilen lebt).
-
Jo, die Typinformation würde ich auch raushalten. Ich persönlich schreibe gerne get und set, aber das ist, glaub ich, nicht wesentlich.
Es geht ja nicht darum eine Meisterschaft für kurze Namen zu gewinnen.
-
es geht hier weniger um geter und seter, und by the way, der oben angezeigte funktionsname ist eine private methode der Klasse,die ermöglichen soll aus 2 vectoren vector<x> und vector<vector<x>*> ein bestimmtes element rauszusuchen.
(und nein, das auslagern des ganzen in eine andere Klasse ista uch unmöglich, da ich die beiden vectoren auch separat brauche)
-
otze schrieb:
jo, ich hab das problem, dass ich es irgendwie nicht schaffe, sinnvolle kurze namen zu vergeben.
Wieso willst du das denn?
Ich mag kurze Namen nicht so - ich versuche sie lieber aussagekräftig zu machen.wenn bei mir in einer funktion der rückgabeparameter vom typ "vector" ist, dann nehm ich auch meistens eine variable mit dem namen "vector"
Falsche Denkweise.
Der Typ ist egal. Frage dich: Was macht die Variable
Wenn es der Rückgabewert ist, dann nenn sie result, wenn dir nix besseres einfällt. Aber mit vector kann ja keiner etwas anfangen.
Versuche zu beschreiben was die Variable macht - wie würdest du jemanden erklären, warum du diese Variable brauchst.
zB so:
A: Ich weiss nicht wie ich diese Variable nennen soll...
B: Wieso brauchst du die Variable denn?
A: Naja, ich sortiere in dieser Funktion einen Container und strippe dann alle doppelten Elemente und die Variable ist das Ergebnis.
B: Was für einen Wert beinhaltet diese Variable denn?
A: Naja, den ursprünglichen Container, aber sortiert und ohne doppelten Elemente.
B: Kannst du das in einem Wort zusammenfassen?
A: sorted... unique elements... stripped... sortedStripped?
B: sortedStrippedContainer klingt doch gutSicher nicht ideal mein Ergebnis
aber es ist durchaus passend.
Du kannst ja später jederzeit den Namen ändern. Wichtig ist nur, dass du es übst.Ohne üben wird es nicht besser - da kann man auch keine besonders guten Tips geben.
getGroupMemberWithElement...
Klingt komisch.
GroupMember? Wieso? Sollten nicht alle Member zu einer Group gehören? Wenn nciht, dann ist Group eine eigene Klasse...Also der Name passt logisch nicht gut zusammen. Und vorallem das With schaut sehr komsich aus. uU liegt es aber nicht am Design und der Name ist einfach nur mies
Aber nach deiner Erklärung nach, klingt es eher nach schlechtem Design und passenden Namen.
wie macht ihr das? nach welchen Kriterien benennt ihr eure variablen/typen/funktionen?
Ich denke immer nach: Was macht diese Variable, Wozu brauche ich sie, Wie würde ich jemanden erklären wozu sie gut ist
-
Optimizer schrieb:
Es geht ja nicht darum eine Meisterschaft für kurze Namen zu gewinnen.
Wenn ich mir da so einige Codes ansehe, könnte man aber meinen, dass es bei dieser Meisterschaft um eine Menge Geld geht...
Ich habe nie verstanden warum viele Leute vor langen Variablennamen Abstand halten. Klar, zu lange soll der Name auch nicht sein - aber Tippfaule Leute sollten IMHO auch nicht programmieren...
-
@Shade sicher hast du recht, das das design nicht ideal ist, aber bei diesem spezifischen problem scheints auch nicht viel anders zu gehen^^
aber danke für den kleinen VOrtrag über nahmensgebung
noch eine frage, benutzt ihr den "_" in namen? also eine_variable zb
-
CamelCase mag ich nicht. Ich benutze immer foo_bar
-
otze schrieb:
noch eine frage, benutzt ihr den "_" in namen? also eine_variable zb
nein. grossbuchstaben sind total klasse als worttrenner.
-
otze schrieb:
jo, ich hab das problem, dass ich es irgendwie nicht schaffe, sinnvolle kurze namen zu vergeben.
kürze ist völlig irrelevant.
aber sinnvoll ist wichtig. evtl schießt Shade gerade über's ziel hinaus.wenn bei mir in einer funktion der rückgabeparameter vom typ "vector" ist, dann nehm ich auch meistens eine variable mit dem namen "vector"
das kann sinnvoll sein. nicht umsonst heißt ne laufvariable i oder j oder k.
der rückgabeparameter hat keinen sinnvollen namen, daher ist ein bedeutunsleerer wue "vector" an sich gut. noch besser (und noch platter) ist "result". da braucht man nichtmal über den typ nachzudenken.-einfach weil mir nichts bessres einfällt...
nicht gut. der platte name sollte schon aus gründlicher überlegung entstammen, in der man verschiedene alternativen begutachtetz hat und letztlich den nimmt, der am wenigsten denkaufwand erfordert, wenn man nach jahren den code nochmal lesen muss.
und wenn ich dann ne funktion habe, die sehr spezialisiert ist, dann hat sie meist solch schlangennamen wie:getGroupMemberWithElement...
guter name, aber designfehler vorher.
wie macht ihr das? nach welchen Kriterien benennt ihr eure variablen/typen/funktionen?
ganz, wie man auch in der außenwelt sachen benennt. der hund heißt hund, das kind heißt kind und die frau heißt frau. willkürliche namen wie bello oder anneliese verwirren nur und lenken vom wesentlichen ab.
ist das problem nicht gut in viele kleine klassen kleinzuhacken, sondern wird zu einem haufen funktionen, dann werden meine funktione auch lang und länger. ich sehe da an einen 6-zeiler, dessen name 36 zeichen lang ist (ausgeschrieben 52 zeichen). und der name ist gut.
wenn du nicht den treffenden namen findest, dann gib dir ruhig auch mal 15 minuten zeit, ihn zu suchen. eigrntlich gibt es kaum was wichtigeres im ganzen programmiergeschäft, als den treffenden namen zu benutzen.
-
Master-Kriterium:
Ein Fremder soll den Code lesen können (auch wenn Du für dich alleine hackst: nach einem halebn Jahr nicht draufgucken bist Du so gut/schlecht wie ein fremder)Also, wie schon gesagt: was steht in der variable drin - in deinem vector z.B. Namen? Mitglieder?
Sprache ist eigentlich egal - ich bevorzuge English, weil es im mittel kürzer ist, IMO prägnanter (weil Übersetzungsvariationen nicht dazukommen), und man sich den Schiet mit umlauten/ß sparen kann.
(Ich hab mal jmd gesehen, der seine Variablen "durchnumeriert" hat: s0, s1, s2, s3, s4, s5.... bitte nicht.)
Sub-Regeln:
-
orthogonality
Bei "jungen" codern stelle ich oft das Bedürfnis fest Variablen "zu sparen" und mit unterscheidlichen bedeutungen wiederzuverwenden. Bringt normalerweise überhaupt nix, und 10 variablen mit je einer Bedeutung sind klarer als 5 Variablen mit je 2. -
principle of least surprise
Konsistenz ist alles. Wenn eine Variable mit der gleichen Bedeutung mal currentMbr, mal curMember heißt, überlädst du "nur" den Aufmerksamkeitsspeciehr des "Lesers". Wenn sie dreimal "member", und einmal "current" heißt, erzeugst Du das Gefühl, daß die Variable an dieser einen Stelle etwas anderes bedeutet, und man sie lieber nicht anrühren sollte.
Genauso umgekehrt: wenn eine Variable "member" mal den namen, mal den ID eines Mitglieds enthält, ist das ganz schön fies.
- age rule
Nach meiner Erfahrung werden die Namen mit den Jahren länger und pendeln sich so um die 15 Zeichen Maximum ein. Weiß nicht woran das liegt...
-
-
volkard schrieb:
und wenn ich dann ne funktion habe, die sehr spezialisiert ist, dann hat sie meist solch schlangennamen wie:getGroupMemberWithElement...
guter name, aber designfehler vorher.
name is mies, hab ihn nämlich nun korrigiert(getElementWithID war doch besser, und heisst was ganz andres^^),und wegen des designfehlers wollte ich dich mal fragen, ob man das in nem andren thread diskutieren kann?
-
otze schrieb:
name is mies, hab ihn nämlich nun korrigiert(getElementWithID war doch besser, und heisst was ganz andres^^)
Wie wäre es mit
GetElementByID()
oder einfach nur
GetElement(int id) ?
-
otze schrieb:
name is mies, hab ihn nämlich nun korrigiert(getElementWithID war doch besser, und heisst was ganz andres^^),
uff!
also das sollte der name bedeuten. dann war's gar kein designfehler. dann war der name nur fragwürdig. unter dem jetzigen namen kann sich jeder was vorstellen.und wegen des designfehlers wollte ich dich mal fragen, ob man das in nem andren thread diskutieren kann?
eigenlich schon, aber hat sich erledigt.
-
volkard schrieb:
wenn du nicht den treffenden namen findest, dann gib dir ruhig auch mal 15 minuten zeit, ihn zu suchen. eigrntlich gibt es kaum was wichtigeres im ganzen programmiergeschäft, als den treffenden namen zu benutzen.
Auch wenn das jetzt off-topic sein sollte
:
Ihr kennt doch sicher von diversen Baumansichten (z.B. im Windows-Explorer) die kleinen + und - vor einem Eintrag, mit denen man die darunterliegende Struktur ein- und ausblenden kann. Wie heißen diese Dinger? Ich habe mich in der Firma durch's halbe Stockwerk gefragt und das MSDN rauf und runter gelesen, aber ich weiß bis heute noch nicht, wie diese Dinger heißen (Ich musste mal eine Baumansicht programmieren, hatte da aber Probleme mit den Variablennamen)
-
Glaubst du, dass die Dinger einen eigenen Namen haben? Für mich ist das einfach ein + und ein - und ich glaube nicht, dass sich dafür jemand einen Namen ausgedacht hat.
-
Ich würde das Open- bzw. CloseTree o.ä. nennen.