Abkürzung von Variablennamen [geschlossen]

8

Ich habe immer Schwierigkeiten, Variablennamen abzukürzen. Gibt es einen Standard für die Abkürzung von Variablennamen?

Huzaifa
quelle
1
Ist dies ein Duplikat von stackoverflow.com/questions/4358840/… ?
11
Nimm den Hinweis. Wenn es schwierig ist, dann hör auf damit.
S.Lott
3
Das Arbeiten mit abgekürzten Bezeichnern in Code, den Sie nicht geschrieben haben, verursacht Hirnschäden.
Rick Sladkey
2
Die strikte Einhaltung von Regeln ist entweder eine Ursache oder ein Zeichen für eine Schädigung des Gehirns. In jedem Fall ist das Urteil wichtig.
T Duncan Smith
1
@T Duncan Smith: Woher kommt das? Sie haben nur angedeutet, dass diejenigen, die der akzeptierten Antwort auf diese Frage zustimmen, Hirnschäden haben. Ich habe nur Spaß gemacht, dass ich es schwierig finde, kryptischen Code zu lesen.
Rick Sladkey

Antworten:

66

Der Standard, den ich verwende, besteht darin, Variablennamen nicht abzukürzen, es sei denn, die Abkürzung ist besser lesbar als die Vollversion ( iz. B. für Iterationsindizes). Wir benennen Dinge, damit wir kommunizieren können. Das Abkürzen von Variablennamen verringert normalerweise nur die Kommunikationsfähigkeit.

Rein Henrichs
quelle
5
Ich bin mir nicht sicher, ob ich damit einverstanden bin. Ich kürze nicht viel ab, aber ich denke, dass das Abkürzen in einigen Fällen eine gute Idee ist. Eigentlich würde ich lange Variablennamen in einem kurzen lokalen Bereich sehr ärgerlich finden. Ich schreibe viele Funktionen, bei denen "p" sich auf einen Punkt im 3-Raum bezieht. Ich denke, das ist so klar wie "thePoint" und einfacher zu lesen, wenn die Funktion auf irgendeine Weise auf einen Punkt angewendet werden soll.
T Duncan Smith
4
Wie gesagt, ich bevorzuge vollständige Namen, "es sei denn, die Abkürzung ist besser lesbar". Es hört sich so an, als wären wir uns tatsächlich einig.
Rein Henrichs
@ Duncan, vielleicht ist dir das klar, aber nicht jeder würde sofort die Korrelation zwischen der Abkürzung und dem, was du eigentlich meinst, erkennen. Ich denke, alle Variablen sollten vollständig beschreibend sein, es sei denn, Sie können sie für alle anderen Benutzer sofort verständlich machen. Wie Rein sagte, ist die Verwendung von 'i' in einer Schleife ein solches Szenario, in dem ich es für akzeptabel halte.
Darren Young
1
Ich stimme fast zu. Ich würde sagen, nicht abkürzen, es sei denn, die Abkürzung ist so gebräuchlich, dass kein Zweifel darüber besteht, wofür sie steht. Ein gutes Beispiel ist System.IO. Common kann auch nur in dem Unternehmen üblich sein, in dem Sie arbeiten. Das würde natürlich bedeuten, dass neue Mitarbeiter nicht genau wissen, was es bedeutet. Ein Teil des Unternehmens zu sein würde jedoch bedeuten, dass sie früher oder später die Umgangssprache des Unternehmens lernen würden.
Pete
3
@Duncan Ich würde ziemlich gerne alles loswerden, was keine Informationen vermittelt, als Gegenleistung dafür, dass ich den Rest nicht abgekürzt habe. "thePoint" ist ein Haustierhass von mir, da "the" genau nichts beiträgt - aber es kann noch schlimmer gemacht werden, indem man es eher mit "thePt" als mit "point" oder "p" abkürzt.
Julia Hayward
13

Ich bin kein C # -Programmierer, daher kann ich Ihnen nicht viele Ratschläge zu C # -Konventionen geben. Aber ich habe einige Gedanken über Abkürzungen.

Als ich älter und erfahrener geworden bin, habe ich festgestellt, dass ich immer weniger abkürze. Ich gebe zu, dass ich zu Beginn des Programmierens keine sehr gute Schreibkraft war. Das habe ich seitdem besser gemacht;). Ich werde für Variablen mit sehr begrenztem Umfang frei abkürzen, so dass ich ihre gesamte Lebensdauer auf einem Bildschirm sehen kann. Aber ansonsten ziehe ich es vor, es nicht zu vermeiden, wenn ich es vermeiden kann - ich kürze nie ab, um das Tippen zu speichern.

Ich versuche immer noch, meine Zeilen unter 80 Zeichen zu halten. Ich bin mir nicht sicher, ob das heutzutage Sinn macht, aber es ist eine alte Gewohnheit. Ich werde also abkürzen, wenn ein Variablenname sonst sehr lang sein wird. Aber bevor ich das tue, werde ich versuchen, einen prägnanteren Namen zu finden, der ebenso klar ist - alles andere, was gleich kürzer ist, ist besser (wenn man von der erweiterten Form spricht).

Wo Sie abkürzen, ist es meiner Meinung nach am wichtigsten, dass Sie in einer bestimmten Codebasis und über verwandte Codebasen hinweg immer auf die gleiche Weise abkürzen. Ihr erster Instinkt ist wahrscheinlich der, mit dem Sie gehen, da Sie sich am leichtesten daran erinnern können, aber es kann sich lohnen, mit anderen Personen über dasselbe Projekt zu sprechen. Heutzutage arbeite ich hauptsächlich mit einem anderen Programmierer in einem offenen Büro voller Nicht-Programmierer. Sie halten uns für verrückt, weil wir häufig ausführliche Diskussionen darüber führen, wie verwandte Variablennamen konsistent abgekürzt oder Parameter in Funktionsaufrufen usw. konsistent geordnet werden können. Die Benennung ist jedoch wichtig, selbst für zwei Personen. In größeren Teams wird es noch wichtiger. Eine Sache, bei der ich ziemlich religiös bin, ist das Beheben von Inkonsistenzen in solchen Dingen, sobald ich sie entdecke.

EDIT: Einige Abkürzungen sind allerdings gut, denke ich. In meinem aktuellen Job hat ein Großteil des Codes, den ich schreibe, mit der Auswertung von Splines und anderen parametrischen Funktionen bei bestimmten Parameterwerten zu tun. Unsere Codebasis ist in dieser Hinsicht tatsächlich inkonsistent. Ich weiß, dass u an einigen Stellen verwendet wird und param (eine Abkürzung selbst) an anderen verwendet wird. U ist eine allgemein verstandene Abkürzung für Parameter in diesem Bereich, daher denke ich, wir sollten dies durchgehen und konsistent machen. Ich würde mit jedem von u, param oder parameter in Ordnung sein. Wir verwenden sie so oft, dass es unwahrscheinlich ist, dass es zu Verwirrung kommt, solange wir nur eine verwenden . Aber ich würde dich bevorzugen.

Es ist jedoch schlimmer als das - wir haben tatsächlich verschiedene Arten von Parametern. Und wir haben mehr als einen Namen für einige von ihnen.

Der Grund dafür ist das Lehrbuch. Es stellte sich heraus, dass wir zwischen sechs Parameterräumen abbilden mussten - die Gründe sind kompliziert, aber im Grunde mussten wir Parameter haben, die dem Parameterraum, dem normalisierten Parameterraum, dem Bogenlängenraum, dem normalisierten Bogenlängenraum, dem stückweisen Raum und dem normalisierten Raum entsprachen stückweise Raum. Wir haben zunächst nicht realisiert, dass wir zwischen all diesen Räumen hin und her kartieren müssen. Und wir waren inkonsistent darin, wie wir Parameter benannten, die Punkte in diesen Räumen beschreiben.

Dies passiert manchmal - Ihre App wird erwachsen und Sie tun einige inkonsistente Dinge, während Sie sie erweitern. Das Wichtigste ist, dass Sie erkennen, dass Sie unordentlich geworden sind, und hineingehen und es reparieren, bevor die Unordnung alles andere infiziert und Sie mit einem Haufen Trümmer enden.

T Duncan Smith
quelle
Interessant, vorausgesetzt, Sie verwenden Visual Studio, würde ich die Parameter nicht abkürzen, da sie angezeigt werden, sobald Sie "myfunc (" eingeben, und Sie möchten nicht, dass double createBox(string tb, int cir, double pmj)nur ein Gedanke hinzugefügt wird
Mark Lalor
Ich benutze hauptsächlich Emacs. Ich bin ein bisschen ein Dinosaurier, aber ich muss auch mit ein paar Sprachen (zur gleichen Zeit, im gleichen Code) auf mehreren Plattformen arbeiten. Ich kürze manchmal Parameter ab, wenn die Abkürzung offensichtlich (und konsistent) ist, weil ich versuche, Funktionen so kurz zu halten, dass ich sie alle auf einer Seite sehen kann, aber oft nicht, weil ich mein Bestes tue, um Funktionssignaturen trotzdem kurz zu halten . Das Wichtigste ist jedoch die Konsistenz. Wenn "derselbe" Parameter (konzeptionell) an einer Stelle abgekürzt wird, sollte er immer so sein.
T Duncan Smith
1
Wie auch immer, der Hauptpunkt hier, IMHO, ist nicht einmal, dass Sie automatisch das Richtige eingeben, ohne es nachzuschlagen (obwohl dies ein Bonus ist). Der Hauptpunkt besteht darin, die kognitive Belastung beim späteren Lesen des Codes zu verringern. Es ist ein Klischee, aber Sie neigen dazu, selbst Ihren eigenen Code viel öfter zu lesen, als Sie ihn schreiben. Wenn die wesentlichen Ideen im Wesentlichen schwierig sind, möchten Sie so viel unwesentliche kognitive Belastung wie möglich beseitigen. Konsistenz hilft hier. Es ist ein unmögliches Ideal, aber der ideale Code sollte nur irreduzible Schwierigkeiten enthalten.
T Duncan Smith
7

Die vry rsn w nicht bbrvt st mk sr th cd s rdbl nd mntnbl z

int accountBalanceInSavings

-> könnte mit abgekürzt werden

int accBalInSaving

Beachten Sie, dass zwei der vier Wörter kurz sind (account-> acc und Balance-> Bal), die anderen beiden jedoch nicht. Welche Regel hier angewendet wird - die ersten 2 Wörter abbrivieren, es sind keine "Wörter über 6 Buchstaben", weil 2 7 Buchstaben waren und einer nicht war.

So könnte / sollte es 'accBalInSav' sein, yuk yuk yuk .......

Meine Erfahrung als Programmierer, die älter und weiser werden, verkürzen sie immer weniger. In meinem Alter versuchen wir wahrscheinlich, die Sünden unserer Jugend wiedergutzumachen .....

Denken Sie daran, dass Code einmal geschrieben wird (ok, viele mehr als einmal) und tausende Male gelesen wird.

mattnz
quelle
3
Wenn ich es außerhalb des Kontexts sehen würde, hätte ich keine Ahnung, was accBalInSaving bedeutet. Es ist auch genauso lang wie SavingsBalance
Richard Tingle
Wenn man eine Variable wie verwenden muss accBalInSaving, stimmt etwas mit dem Design nicht - die Variable enthält zu viele Kontextinformationen, die eigentlich implizit sein sollten. Wenn es beispielsweise eine Eigenschaft der AccountKlasse wäre, müsste "account" nicht in den Namen eingefügt werden. Und wenn das der Fall ist, ist Abkürzung nur ein Schmerzmittel, das hilft, dieses Problem unter den Teppich zu kehren.
Konrad Morawski
3

Es gibt eine ähnliche Frage zu einzelnen Zeichennamen: Verwenden einzelner Zeichen für Variablennamen in Schleifen / Ausnahmen .

Meine Antwort damals wie heute ist, sie kurz zu halten, wenn der Umfang klein ist. Beispielsweise ist ein Parameter einer Kurzfunktion besser lesbar, wenn er kurz ist und weniger Platz benötigt. Eine klassenweite Variable sollte sehr beschreibend sein.

Steve McConnells klassisches Buch Code Complete eignet sich hervorragend für solche Dinge.

Richard
quelle
2

Ich glaube nicht, dass es offizielle oder gemeinsame Regeln für Abkürzungen gibt. In der Regel wird von jedem Einzelnen und innerhalb jedes einzelnen Projekts ein Abkürzungssystem entwickelt. Es kann bestimmte Regeln für die Quellcode-Richtlinien eines Unternehmens geben, diese variieren jedoch auch je nach Unternehmen.

Nebenbei bemerkt, warum überhaupt abkürzen? Das führt dazu, dass nur Sie verstehen, was die Abkürzungen bedeuten. Verwenden Sie vollständige und beschreibende Namen für Variablen. Dies führt zu einem selbstdokumentierenden Code.


quelle
2

Wenn Sie Zweifel haben, formulieren Sie es.

Der Punkt eines Variablennamens ist so, dass die Bedeutung des Codes klarer wird. Wenn die Abkürzung nicht sehr offensichtlich ist, können Sie auch die kleinstmögliche verwenden. Variablennamen und Funktionsnamen sind normalerweise die einzigen Teile der menschlichen Sprache im Code und dienen daher sowohl als "Orientierungspunkte" für das menschliche Auge, um relevante Teile des Codes (oder in einer großen Codebasis Werkzeuge wie grepoder ack) als auch als Hinweise zu finden zum Verständnis.

Wenn die nächste Person Ihren Code liest, wird sie Ihnen dafür danken. Diese Person könnte in einem Jahr Sie sein. Ich habe viel Code, den ich leider abkürzen muss, deshalb versuche ich heutzutage, ihn zu vermeiden.

Es ist in Ordnung abzukürzen, wenn ...

... Wenn die abgekürzte Form von mehr als nur den Personen, die an Ihrem Projekt arbeiten, in gesprochenem oder geschriebenem Englisch verwendet wird (viele Wörterbücher enthalten diese Art von Informationen neben dem von ihnen definierten Begriff).

var extensible_markup_language_element; // don't do this
var xml_element; // better
var element; // possible if the name of the function or the documentation make it clear you're dealing with XML and not the periodic table
docs.toString(); // most people capable of reading code know docs == documentation

... Wenn sich die Abkürzung eindeutig auf ein einzelnes Konzept bezieht und sofort von jemandem erkannt wird, der mit der Codebasis nicht vertraut ist. Auch dann hilft ein Kommentar oder eine Dokumentation.

var auth = user.auth;
if (auth) // If the user is authenticated?
          // If the user is authorised to do something?
          // If the authentication function exists for that user group?
          // If some setting called auth is turned on for that user?
          // If the user is the author of the document in question?
          // If the user has some authority?

var attrNames = retrieveAttrs();
if (attrNames)  // hm, attrNames sounds like an array of strings - which will be boolean true even if empty - this if looks like a bug!

const MDF // author is writing an iOS app for ordering hand-carved artisanal fibreboard so anyone familiar with the problem domain knows this has plainly nothing to do with Microsoft Database Files. Though maybe the first time it comes up in the code the author should perhaps still put its full name

... Wenn der Variablenname nur in einem einzelnen Bereich oder einer kleinen Funktion vorhanden ist und Sie nicht erwarten, dass der Benutzer aus dem Namen eine Bedeutung ableitet, verwenden Sie ein einzelnes Zeichen. In solchen Fällen iund jsind üblich.

foreach $i (1..10) { say $announcement->[$i] }

... Wenn Sie eine Schnittstelle schreiben (dh keinen Variablennamen, also außerhalb des Rahmens der Frage, nur erwähnt, weil Variablennamen und Schnittstellen, die sie festlegen, häufig dasselbe Vokabular verwenden), können in diesem Fall andere Regeln gelten, zum Beispiel:

some_command --transaction-message "Done" # a bit wordy - keep, but ALSO allow for convenience:
some_command --msg "Done" # might be useful
some_command -m "Done"    # if you can spare -m

... Wenn Ihre Codebasis im selben Projekt mehrmals auf dasselbe Konzept verweisen muss und wenn die Abkürzung in einem Styleguide für dieses Projekt definiert werden kann und wenn sie eindeutig ist. Wenn Ihr Projekt nicht groß genug für einen Styleguide ist, ist es nicht groß genug, damit es sich lohnt.

Ich werde diesem Beispiel kein Codebeispiel geben, da es per Definition nur in einem großen Projekt funktioniert, aber siehe auch den nächsten Punkt:

... bei der Arbeit an einem etablierten Projekt mit mehreren Mitwirkenden und einem Styleguide, der Abkürzungen vorschreibt. In diesem Fall sollten Sie nur gemäß dem Styleguide abkürzen, aber auf Probleme achten und mit Kommentaren versehen sein (z. B. "Dies ist eine Liste von Attributnamen als Zeichenfolgen").

Typen sollten mit "_t" enden. Rohe Strukturdefinitionen in "_struct"

- https://metacpan.org/source/SHLOMIF/XML-LibXML-2.0117/HACKING.txt

Ein letzter Gedanke: Wenn Sie immer noch unannehmbar lange Variablennamen haben (z. B. bestehend aus vier oder mehr semantischen Einheiten wie totalAfterTaxInLocalCurrency), kann dies ein Symptom dafür sein, dass Ihr Code versucht, in einem einzigen Bereich zu viel zu tun, und seine Funktionen überarbeitet werden müssen out oder Ihre Variablen werden möglicherweise logischer in einem einzelnen Objekt verwaltet.

user52889
quelle
0

Der Grund, warum wir Variablen abkürzen, besteht darin, die Eingabe großer Variablen zu beenden. Gleichzeitig sollte die abgekürzte Variable so explizit sein, dass Sie verstehen können, was sie enthält, anstatt dorthin zurückzukehren, wo sie zuerst deklariert oder instanziiert wurde. Also zum Beispiel:

int accountBalanceInSavings

-> könnte mit abgekürzt werden

int accBalInSaving

---> aber abkürzen auf

int accBal

Wäre definitiv keine gute Option, da man nicht verstehen könnte, was die Variable enthält, wenn man sie nur betrachtet.

Gaurav Sehgal
quelle
2
Ich würde verwechseln accBalInSavingfüraccumulated Bal In Savings
KajMagnus
-4

Sie sollten Dinge nicht abkürzen, um sie abzukürzen, Sie sollten es für Ihre / andere Bequemlichkeit tun, aber wenn Sie wollen, dann ist eine allgemeine Regel, die ich für die Abkürzung habe, wenn ein Wort mehr als vier oder fünf Buchstaben lang ist Ich werde es auf die ersten drei signifikanten Buchstaben dieses Wortes verkürzen, z.

int damagePerSecond;

könnte abgekürzt werden

int dmgPerSec;

oder wenn Sie es so kurz wie möglich wollen,

int dps;
Gott der Lamas
quelle
1
Dies hat nichts mit den bereits gegebenen Antworten zu
tun