Was sollte ich für private Variablen als privat kennzeichnen, wenn sie ohnehin schon sind?

StackOverflow https://stackoverflow.com/questions/552857

  •  23-08-2019
  •  | 
  •  

Frage

Soweit ich weiß, in C # alle Felder sind für Standard privat, wenn nicht anders gekennzeichnet.

class Foo
{
  private string bar;
}

class Foo
{
  string bar;
}

Ich denke, diese beiden Erklärungen sind gleich.

Also meine Frage ist: Was sollte ich für private Variablen wie private markieren, wenn sie bereits privat

War es hilfreich?

Lösung

Ich habe eine Weile über diese auf dem Zaun gewesen. Früher habe ich zu argumentieren, es implizit verlassen, aber jetzt denke ich, ich bin kippte auf sie explizit zu machen.

Gründe für die es verlassen implizit:

  • Es bedeutet, dass es ein größerer Unterschied für nicht-private Mitglieder (oder etwas mit mehr Zugang als der Standard); Dies unterstreicht den Unterschied, wenn der Code
  • Lesen

Gründe für die es ausdrücklich:

  • Einige Entwickler können nicht wissen, die Standardwerte: so dass es explizit heißt, es ist klar, alle
  • Sie zeigt, haben Sie aktiv eine Entscheidung, anstatt nur machen es bis zum Standard
  • verlassen

Diese letzteren Punkte sind grundsätzlich diejenigen, die von Eric Lippert gemacht wenn wir darüber gesprochen vor einer Weile.

Andere Tipps

Jetzt; Felder ziemlich viel sollte sowieso immer privat sein, so dass es eine Kante Fall ist, ob Sie sollten stören.

Für das breitere Thema, ich erinnere mich einen Kommentar von Eric Lippert - im Wesentlichen sagen, dass eine Methode / Klasse gegeben / was auch immer:

void Foo() {}
class Bar {}

Dann ist es nicht klar, ob sie absichtlich privat / intern sind, oder ob der Entwickler hat darüber nachgedacht, und entschieden , dass sie privat / intern / was auch immer sein sollen. So sein Vorschlag war:. Dem Leser sagen, dass Sie die Dinge absichtlich statt zufällig tun - macht es explizit

Ja, sie sind gleich, aber Ich mag als private Variablen markieren privat , ich denke, es ist das Lesen verbessert.

auch verwende ich diese gemeinsame Notation für private Mitglieder, es ist sehr nützlich:

private string _bar;

Dies ist eine reine Coding-Standards Frage aber, für das, was es wert ist, ich markieren immer explizit private Mitglieder als privat.

Wenn Sie wurden zwischen Java und C # auf einer regelmäßigen Basis Schalt ich es mir vorstelle wäre ziemlich wichtig zu sein, die Zugriffsmodifikator explicity angeben. Zum Beispiel in Java

void myMethod()
{

}

jede Klasse in Ihrem Paket hat Zugang zu diesem Verfahren. In C # ist es offensichtlich privat zu der Klasse und inneren Klassen.

Sie machen die Menschen nicht erraten, lassen Sie sich nicht falsche Annahmen machen, und denkt nicht weniger Zeichen in irgendeiner Weise Klarheit entspricht.

Es gibt keinen guten Grund, nicht diese explizit zu machen, und imho ist es ein Fehler, C # unterstützen (vor allem, wenn sie bereit sind, zu tun, was sie taten Aussagen aus dem gleichen Grunde zu wechseln)

Explizit mit Privat kann Lesbarkeit in bestimmten Grenzfällen verbessern.

Beispiel:

        /*
        Tomorrow when we wake up from bed,
        first me and Daddy and Mommy, you, eat
        breakfast eat breakfast like we usually do,
        and then we're going to play and
        then soon as Daddy comes, Carl's going
        to come over, and then we're going to
        play a little while. And then Carl and
        Emily are both going down to the car
        with somebody, and we're going to ride
        to nursery school [whispered], and then
        when we get there, we're all going
        to get out of the car...
        */

        int spam;

        /*
        Does this style look at all familiar?
        It should!
        */

Mit Blick auf dieses Fragment können Sie sein, sich nicht sicher, ob Sie in der Methode oder Klassenbereich sind.

Unter Verwendung entweder private oder unterstreichen in Feldnamen (private int spam;, int spam_; oder int _spam;) wird die Verwirrung beseitigen.

Bis zu Ihnen. Tun Sie, was das Beste für die Lesbarkeit oder macht Sinn, in Ihrem Fall. Ich markiere sie als privat nur zu machen, obwohl es klar.

Ich denke, für die Lesbarkeit es immer am besten ist explizit zu sein.

Als Seite, können Sie einen Blick auf ein Visual Studio Plug-in namens Code-Art-Enforcer ( http://joel.fjorden.se/static.php?page=CodeStyleEnforcer ), die die DXCore Erweiterungen verwendet Echtzeit-Feedback auf Ihre Codes Einhaltung zu liefern In den Codierungsstandards (vollständig anpassbar).

Ich persönlich bevor Kennzeichnung des Standard private und öffentliche Bereiche explizit Standard. Sie können auch die Standardeinstellungen kennen, aber Ihr Gehirn Ausführlichkeit wie, wann immer Sie den Code schnell scannen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top