Verwenden Sie Artikel in Ihren Variablennamen?

8

Bearbeiten: Es scheint mindestens zwei gültige Gründe dafür zu geben, warum Smalltalkers das tun (Lesbarkeit während Nachrichtenverkettung und Problemdefinition), aber vielleicht kann die Frage länger offen bleiben, um die allgemeine Verwendung zu adressieren.

>

Original: Aus Gründen, die ich lange vergessen habe, verwende ich nie Artikel in meinen Variablennamen. Zum Beispiel:

  

aPerson, theCar, einObjekt

Ich glaube, ich finde, dass Artikel die Namen mit bedeutungslosen Informationen verdüstern. Wenn ich einen Mitarbeitercode sehen würde, der diese Konvention verwendet, würde mein Blutdruck ganz leicht ansteigen.

Vor kurzem habe ich begonnen, Smalltalk zu lernen, hauptsächlich weil ich die Sprache lernen möchte, die Martin Fowler, Kent Beck und so viele andere Großmütter aufwachsen und geliebt haben.

Mir ist jedoch aufgefallen, dass Smalltalkers scheinbar unbestimmte Artikel ( a, an ) in ihren Variablennamen verwenden. Ein gutes Beispiel wäre in der folgenden Setter-Methode:

%Vor%

Das hat mich dazu gebracht, meine Position zu überdenken. Wenn eine Gemeinschaft, die so respektiert und einflussreich ist wie Smalltalkers, Artikel in Variablennamen weit verbreitet übernommen hat, gibt es vielleicht einen guten Grund dafür.

Benutzt du es? Warum oder warum nicht?

    
rcampbell 09.04.2009, 12:26
quelle

9 Antworten

8

Diese Namenskonvention ist eines der Muster in Kent Becks Buch Smalltalk Best Practice Patterns . IMHO dieses Buch ist ein Muss für Nicht-Smalltalkers, da es wirklich hilft, Dinge zu benennen und selbst-dokumentierenden Code zu schreiben. Außerdem ist es wahrscheinlich einer der wenigen Pattern-Sprachen, die zu sehen sind: http://www.amazon.co.uk/gp/product/0195019199?ie=UTF8&tag=playinktenuki-21&linkCode=as2&camp= 1634 & amp; creative = 19450 & amp; creativeASIN = 0195019199 "> Alexander Qualität ohne einen Namen .

Ein weiteres gutes Buch über Codemuster ist Smalltalk with Style , das als kostenloses PDF verfügbar ist .

Im Allgemeinen besteht die Konvention darin, dass Instanzvariablen und Accessoren das leere Substantiv verwenden und Parameter den unbestimmten Artikel plus eine Rolle oder einen Typ oder eine Kombination verwenden. Temporäre Variablen können nackte Substantive verwenden, da sie die Instanzvariable selten duplizieren. alternativ ist es ziemlich häufig, sie genauer zu benennen als nur einen unbestimmten Artikel, um ihre Rolle im Kontrollfluss anzugeben: eachFoo , nextFoo , randomChild ...

    
Damien Pollet 09.04.2009, 13:34
quelle
10

Es wird in Smalltalk häufig als eine typlose Sprache verwendet, da es den -Typ eines Arguments im Methodenaufruf angibt. Der Artikel selbst signalisiert, dass es sich um eine Instanz eines Objekts der angegebenen Klasse handelt.

Aber denken Sie daran, dass die Methoden in Smalltalk anders aussehen, wir benutzen so genannte Schlüsselwortnachrichten und in diesem Fall helfen die Artikel tatsächlich der Lesbarkeit:

%Vor%     
Janko Mivšek 09.04.2009 12:32
quelle
7

Ich glaube, ich habe eine Antwort gefunden. Wie Konrad Rudolph sagte, benutzen sie diese Konvention aus einem technischen Grund:

  

... das bedeutet, dass die [ Methodenvariable ] den Namen einer Instanzvariable, einer in der Schnittstelle definierten temporären Variable oder einer anderen temporären Variablen nicht duplizieren kann.   - IBM Smalltalk-Lernprogramm

Grundsätzlich kann eine lokale Methodenvariable nicht wie eine Objekt / Klassenvariable benannt werden. Ausgehend von Java ging ich davon aus, dass die Variablen einer Methode lokal begrenzt sind und dass Sie auf die Instanzvariablen mit etwas wie:

zugreifen würden %Vor%

Ich muss immer noch mehr über die Methode / lokales Scoping in Smalltalk erfahren, aber es scheint, dass sie keine andere Wahl haben; Sie müssen einen anderen Variablennamen als den Instanznamen verwenden, daher ist anAddress wahrscheinlich der einfachste Ansatz. Wenn Sie nur Adresse verwenden, erhalten Sie:

%Vor%

wenn Sie bereits eine Instanzvariable Adresse definiert haben ...

    
rcampbell 09.04.2009 12:49
quelle
2
  

Ich fühlte immer, dass die Artikel die Namen mit bedeutungslosen Informationen beschmutzten.

Genau. Und das ist der Grund, warum Artikel fallen gelassen werden müssen: Sie überfluten unnötig den Code und liefern keine zusätzlichen Informationen.

Ich kenne Smalltalk nicht und kann nicht über die Gründe für "ihre" Konventionen sprechen, aber überall sonst gilt das obige. könnte ein einfacher technischer Grund für die Smalltalk-Konvention sein (z. B. ALL_CAPS in Ruby, eine Konstante, die nicht nur nach Konvention, sondern auch wegen der Semantik der Sprache steht).

    
Konrad Rudolph 09.04.2009 12:28
quelle
1

Ich wackle hin und her, wenn ich das benutze. Ich denke, dass es in meinen Projekten zu jeder Zeit auf das Verhältnis von C ++ zu Objective C ankommt. Bezüglich der Grundlage und der Argumentation popularisierte Smalltalk die Vorstellung von Objekten als "Dinge". Ich denke, es war Yourdon und Coad , der sich stark dafür aussprach, Klassen in der ersten Person zu beschreiben. In Python wäre es so etwas wie das folgende Snippet. Ich wünschte wirklich, dass ich mich an SmallTalk erinnern könnte, um ein "richtiges" Beispiel zusammenzustellen.

%Vor%

Insgesamt handelt es sich um einen konversationellen Ansatz zur Lesbarkeit von Programmen. Die Verwendung von Artikeln in Variablennamen war nur ein Teil des gesamten Idioms. Es gab auch ein Idiom, das die Benennung von Parametern und Nachrichtenselektoren IIRC umgab. Etwas wie:

%Vor%

Es war nur eine weitere vorübergehende Modeerscheinung, die immer wieder auftaucht. In letzter Zeit habe ich bemerkt, dass Membernamen wie myHostName in C ++ Code als Alternative zu m_hostName erscheinen. Ich bin immer mehr in diese Verwendung verliebt, die ich zurück zu SmallTalks Idiomen ein wenig glaube.

    
D.Shawley 09.04.2009 13:05
quelle
0

Nie benutzt, vielleicht, weil es in meiner Hauptsprache keine Artikel gibt: P

Wie auch immer, ich denke, solange der Name der Variable aussagekräftig ist, ist es nicht wichtig, ob es Artikel gibt oder nicht, es liegt an der eigenen Präferenz des Coders.

    
Alekc 09.04.2009 12:30
quelle
0

Nein. Ich denke, dass es Platzverschwendung ist und die Lesbarkeit Ihres Codes beeinträchtigt. Ich könnte Variationen des Nomens verwenden, zum Beispiel Person vs Menschen, abhängig vom Kontext. Zum Beispiel

%Vor%     
uriDium 09.04.2009 12:34
quelle
0

Nein, tu ich nicht. Ich habe nicht das Gefühl, dass dies etwas zur Lesbarkeit oder Wartbarkeit meiner Codebasis hinzufügt, und es unterscheidet die Variable für mich in keiner Weise.

Der andere Nachteil ist, dass wenn Sie Artikel in Variablennamen anregen, es nur eine Frage der Zeit ist, bis jemand das in Ihrer Codebasis tut.

%Vor%     
JaredPar 09.04.2009 12:39
quelle
0

Wo ich arbeite, ist der Standard, alle Instanzfelder mit "the-", lokale Variablen mit "my-" und Methodenparameter mit "a-" zu versehen. Ich glaube, das kam zustande, weil viele Entwickler Texteditoren wie vi anstelle von IDEs verwendeten, die verschiedene Farben pro Bereich anzeigen können.

In Java muss ich sagen, dass ich es den Schreibsettern vorziehe, in denen Sie dies dereferenzieren.

Vergleichen

%Vor%

versus

%Vor%

Das Wichtigste ist, einen Standard zu haben und dass sich jeder daran hält.

    
Michael 09.04.2009 13:04
quelle

Tags und Links