Warum empfiehlt StyleCop das Voranstellen von Methoden- oder Eigenschaftsaufrufen mit "this"?
Ich habe versucht zu Folgen, StyleCop, das die Richtlinien auf ein Projekt, um zu sehen, ob der resultierende code war am Ende besser. Die meisten Regeln sind zumutbar, oder eine Frage der Ansicht auf Codierung standard, aber es gibt eine Regel, die mich verwirrt, denn ich habe nicht gesehen, dass jemand anderes empfehlen, weil ich don ' T sehen einen klaren nutzen für Sie:
SA1101: Der Aufruf von {Methode oder Eigenschaft name} muss beginnen mit dem". " - Präfix, um anzuzeigen, dass das Element ist ein Mitglied der Klasse.
Auf der Nachteil, der code ist deutlich Ausführlicher, also was sind die Vorteile der folgenden Regel? Hat jemand hier diese Regel befolgen?
InformationsquelleAutor der Frage Mathias | 2009-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann es den code übersichtlicher auf einen Blick. Wenn Sie
this
ist es einfacher:InformationsquelleAutor der Antwort Jeff Sternal
Ich nicht wirklich Folgen Sie dieser Anleitung, es sei denn, ich bin in den Szenarien, die Sie brauchen:
this.name = name;
) oder Dinge wieEquals
(return this.id == other.id;
)Andere als, dass ich über diese Unordnung. So Wende ich die Regel aus.
InformationsquelleAutor der Antwort Marc Gravell
Ich denke dieser Artikel erklärt es ein wenig
http://blogs.msdn.microsoft.com/sourceanalysis/archive/2008/05/25/a-difference-of-style.aspx
InformationsquelleAutor der Antwort JeremyWeir
Beachten Sie, dass der compiler kümmert sich nicht, ob Sie Präfix Referenzen mit
this
oder nicht (es sei denn, es gibt einen Namenskonflikt mit einer lokalen variable und ein Feld oder eine, die Sie anrufen möchten eine extension-Methode auf die aktuelle Instanz.)Es ist bis zu Sie Ihren Stil. Ich persönlich entfernen
this.
von code, wie ich denke, es verringert sich das signal-zu-Rausch-Verhältnis.Nur weil Microsoft verwendet diese Stil intern bedeutet nicht, Sie zu haben. StyleCop scheint ein MS-internes tool, das an die Börse gegangen. Ich bin für die Einhaltung der Microsoft-Konventionen um die öffentlichen Dinge, wie:
...aber was passiert in den privaten Bereichen-code, sowie, private. Tun Sie, was Ihr team zustimmt.
Konsistenz ist auch wichtig. Es reduziert die kognitive Belastung beim Lesen von code, insbesondere wenn der code-Stil ist, wie Sie es erwarten. Aber auch im Umgang mit einer ausländischen-coding-style, wenn es konsistent ist, dann wird es nicht lange dauern, bis sich daran gewöhnt. Verwenden Sie tools wie ReSharper und StyleCop, um Konsistenz zu gewährleisten, wo Sie denken, es ist wichtig.
Verwenden .NET Reflector legt nahe, dass Microsoft ist nicht so toll, auf die Einhaltung der StyleCop-coding-standards in der BCL sowieso.
InformationsquelleAutor der Antwort Drew Noakes
In der Verwendung von "dies.", wenn verwendet übermäßig oder eine erzwungene Stil Forderung, ist nichts mehr als eine Einrichtung verwendet, die unter dem Deckmantel, dass es < 1% der Entwickler, die wirklich nicht verstehen, code oder was Sie tun, und macht es schmerzhaft für die 99%, die schreiben wollen, leicht lesbaren und wartbaren code.
Sobald Sie mit der Eingabe beginnen Intellisence eine Liste der verfügbaren Inhalte in den Rahmen, wo Sie schreiben, "dies." ist nicht notwendig, setzen Sie die Schüler, und es sei denn, Sie sind völlig ahnungslos, was Sie Programmieren, sollten Sie in der Lage, leicht zu finden, das Element, das Sie brauchen.
Selbst wenn man völlig ahnungslos ist, verwenden Sie ".", um anzudeuten, was verfügbar ist, aber lassen Sie Sie nicht im code. Es gibt auch eine ganze Reihe von add-ons wie Resharper, die helfen, Klarheit über den Umfang und setzen Sie den Inhalt von Objekten effizienter zu gestalten. Es ist besser zu lernen, wie verwenden Sie die tools bereitgestellt, um Sie dann zu entwickeln, eine schlechte Angewohnheit, die gehasst wird durch eine große Anzahl Ihrer Mitarbeiter.
Alle Entwickler, die nicht inhärent zu verstehen, der Umfang der statischen, lokalen, Klasse oder global content sollte sich nicht auf die "Ratschläge" geben Sie hier den Bereich. "." ist schlimmer dann die Ungarische notation mindestens mit der ungarischen notation versehen einen überblick über die Art der variable verweisen, und dient einige Vorteile. Ich würde lieber sehen, " _ " oder "m" zur Kennzeichnung benutzt, Feld Klasse die Mitglieder dann zu sehen,"." überall.
Ich hatte noch nie ein Problem, noch eine Problem mit einem anderen Entwickler, der immer wieder Kämpfe mit der code-Umfang oder schreibt code, der ist immer buggy, weil Sie nicht mit "." ausdrücklich zu. Es ist eine unberechtigte Angst, dass "dies." verhindert, dass künftige code-Fehler und ist oft das argument verwendet, wo Unwissenheit ist geschätzt.
Programmierer wachsen mit der Erfahrung, "." sich Fragen, wie jemand zu setzen Stützräder an Ihrem Fahrrad, wie ein Erwachsener, weil es ist, was Sie hatte zuerst zu verwenden, um zu lernen, wie man ein Fahrrad zu fahren. Und die Erwachsenen könnten herunterfallen ein Fahrrad 1 in 1.000-mal Sie bekommen es, aber das ist kein Grund, Sie zu zwingen, zu verwenden Stützräder.
". " sollte verboten werden, die Sprache, die definition für C#, leider gibt es nur einen Grund für das verwenden es, und das ist die Mehrdeutigkeit auflösen, das könnte auch einfach gelöst werden durch eine bessere code-Praktiken.
InformationsquelleAutor der Antwort ChrisCW
Einige grundlegende Gründe für die Verwendung von
this
(und ich zufällig immer Präfix-class-Werte mit den Namen der Klasse, von der Sie ein Teil sind, sowie auch innerhalb der Klasse selbst).1) Klarheit. Wissen Sie, genau in diesem Moment, welche Variablen Sie deklariert in der definition der Klasse, und die Sie erklärt, wie die einheimischen, Parameter und so weiter. In zwei Jahren werden Sie nicht wissen, und du wirst gehen auf eine wundersame Reise der Wiederentdeckung, dass ist absolut sinnlos und nicht erforderlich, wenn Sie ausdrücklich durch die Eltern vorne. Jemand anderes die Arbeit an Ihrem code hat keine Ahnung von der get-go und somit der nutzen sofort.
2) Intellisense. Wenn Sie Typ'.' erhalten Sie alle Instanz-spezifischen Elemente und Eigenschaften in der Hilfe. Es macht die Dinge viel einfacher, vor allem, wenn Sie die Erhaltung, jemand anderes code oder code, den Sie noch nicht sah in ein paar Jahren. Es hilft Ihnen auch vermeiden, Fehler verursacht durch Missverständnisse, welche Variablen und Methoden deklariert werden, wo und wie. Es kann Ihnen helfen, entdecken Sie Fehler, sonst würde nicht zeigen, bis der compiler verschluckte sich an Ihrem code.
3) Gewährt, können Sie den gleichen Effekt erzielen, durch die Verwendung von Präfixen und anderen Techniken, aber es stellt sich die Frage, warum Sie erfinden ein Verfahren zur Handhabung ein problem, wenn es ein Mechanismus dafür eingebaut in die Sprache, die eigentlich unterstützt von der IDE? Wenn Sie touch-Typ, auch auszugsweise, wird es letztlich reduzieren Sie Ihre Fehlerquote auch nicht zwingen Sie zu nehmen Sie Ihre Finger von der home-position zu bekommen, um den Unterstrich-Taste.
Sehe ich viele junge Programmierer, die machen eine große Sache aus der Zeit, die Sie sparen, indem Sie nicht die Eingabe eines Zeichens oder zwei. Die meiste Zeit wird ausgegeben werden, Debuggen, nicht codieren. Keine Sorge, so viel über Ihre Schreibgeschwindigkeit. Sorgen mehr darüber, wie schnell können Sie verstehenwas Los ist in den code. Wenn Sie sparen Sie eine Summe von fünf Minuten die Kodierung und gewinnen Sie dafür eine zusätzliche zehn Minuten Debuggen, du hast verlangsamt sich nach unten, egal wie schnell Sie Aussehen wie Sie gehen.
InformationsquelleAutor der Antwort YrthWyndandFyre
Ich verfolge es, weil ich denke, es ist wirklich praktisch, um in der Lage zu sagen, abgesehen Zugriff auf statische und Instanz-Mitglieder auf den ersten Blick.
Und natürlich habe ich es in meinem Konstruktoren, weil ich in der Regel geben die Konstruktor-Parameter den gleichen Namen wie das Feld, Ihre Werte zugewiesen bekommen. Also brauche ich "diese", um auf die Felder.
InformationsquelleAutor der Antwort Maximilian Mayerl
Darüber hinaus ist es möglich, doppelte Variablennamen in einer Funktion, so dass die Verwendung von 'dies' kann, machen es klarer.
InformationsquelleAutor der Antwort Michael Gattuso
Ich Folgen, vor allem für intellisense Gründen. Es ist so schön Typisierung
this.
und immer ein consise Liste der Eigenschaften, Methoden etc.InformationsquelleAutor der Antwort James Lawruk