Domanda

Per quanto ne so, in C# tutti i campi privati per impostazione predefinita, se non indicato diversamente.

class Foo
{
  private string bar;
}

class Foo
{
  string bar;
}

Credo che queste due dichiarazioni sono uguali.

Quindi la mia domanda è:cosa devo segnare variabili private come private se già sono private?

È stato utile?

Soluzione

Sono stato sul recinto per un po ' su questo.Ho usato per sostenere lasciando implicito, ma ora penso di essere rovesciato verso rendendo esplicito.

Motivi per lasciare implicito:

  • Significa che c'è una grande differenza per i non soci privati (o qualsiasi cosa con un maggiore accesso di default);questo mette in evidenza la differenza quando la lettura del codice

Le ragioni per esplicita:

  • Alcuni sviluppatori non possono conoscere le impostazioni di default:rendendo esplicito significa che è chiaro per tutti
  • Mostra di aver attivamente preso una decisione, piuttosto che solo lasciando a default

Questi ultimi punti sono fondamentalmente quelli fatti da Eric Lippert quando abbiamo discusso un po ' di tempo fa.

Altri suggerimenti

Ora;i campi devono sostanzialmente essere sempre privato, comunque, si tratta di un caso limite se lei deve preoccuparsi.

Per il tema generale, mi ricordo un commento di Eric Lippert - essenzialmente dicendo che dato un metodo di una classe / qualunque cosa:

void Foo() {}
class Bar {}

Quindi non è chiaro se sono private/interno deliberatamente, o se lo sviluppatore ha pensato di esso, e deciso che dovrebbero essere private/interni/qualunque cosa.Quindi la sua proposta è stata:dire al lettore che si sta facendo le cose deliberatamente invece di incidente - rendere esplicito.

Sì sono uguali, ma mi piace marco variabili private come privato, Penso che migliora la lettura.

anche io uso questo comune notazione per i soci privati, è molto utile :

private string _bar;

Questa è puramente una codifica standard questione ma, per quel che vale, ho sempre esplicitamente marchio riservato ai soci privati.

Se siete stati di commutazione tra Java e C# su base regolare, immagino che sarebbe abbastanza importante specificare il modificatore di accesso esplicitamente.Per esempio in Java

void myMethod()
{

}

ogni classe nel pacchetto ha accesso a tale metodo.In C# è ovviamente riservato per la classe e classi interne.

Non fate indovinare, non farti false ipotesi, e non credo che un minor numero di personaggi in qualche modo equivale a chiarezza.

Non c'è nessuna buona ragione non per fare questo esplicito, e imho è un errore per il C# per il supporto (specialmente se sono disposti a fare quello che hanno fatto per passare in bilancio per lo stesso motivo)

In modo esplicito utilizzando privata può migliorare la leggibilità in alcuni casi limite.

Esempio:

        /*
        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!
        */

Guardando questo frammento si può essere sicuri se si sta nel metodo o classe di portata.

Utilizzando private o il carattere di sottolineatura nel nome di campo (private int spam;, int spam_; o int _spam;) eliminare la confusione.

Fino a voi.Fare ciò che è meglio per la leggibilità o senso nel tuo caso.Io li contrassegna come privato solo per rendere chiaro, però.

Penso che per migliorare la leggibilità è sempre meglio essere espliciti.

Come un lato, Si potrebbe desiderare di avere uno sguardo a un plug-in visual studio chiamata Codice Stile Enforcer (http://joel.fjorden.se/static.php?page=CodeStyleEnforcer) che utilizza il dxCore estensioni per fornire un feedback in tempo reale sulla vostra codici di adesione a standard di codifica (completamente personalizzabile).

Io personalmente preferisco la marcatura di default privato e pubblico di default i campi in modo esplicito.Si può anche conoscere i valori di default, ma il tuo cervello come verbosità ogni volta che si eseguire rapidamente la scansione del codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top