2012-08-05 5 views
9

Ho sentito vari programmatori suggerire di non includere la parola "privato" nelle dichiarazioni, nelle firme dei metodi, ecc. Poiché privato è l'ambito predefinito quando non specificato. Può fare per un codice più pulito, ma sono interessato a quali sono le opinioni sul fatto che tu usi l'ambito "privato" sulle tue variabili, metodi, ecc. Strumenti come CodeRush che generano codice per te includono la parola "privato" così io Sono curioso se questo è buono o cattivo o solo una questione di preferenze personali.Come "privato" è l'ambito predefinito in C# - la parola "privato" deve essere rimossa dalle firme per un codice più pulito?

risposta

16

Il codice di pulizia è più esplicito per quanto riguarda le intenzioni del progettista. Utilizzando private dimostra una scelta deliberata, non aperto al dibattito. Falling to the default apre le domande: era questo di proposito, o semplicemente si è dimenticato di includere un modificatore?

+1

Tranne che privato è l'impostazione predefinita (eccetto per le classi non annidate). Quindi la cosa migliore che il progettista può fare, per rendere il codice più sicuro e più facile da capire, è mantenere la superficie pubblica il più piccola possibile. Rendere qualcosa di privato non richiede una decisione deliberata. Fare qualcosa di non privato fa. –

+0

@Kyralessa: Ho detto che è il default, e la mia tesi è che, almeno in linea di principio, tutto ciò che fai dovrebbe essere _deliberato_, non solo contrassegnare qualcosa di pubblico. –

+0

Si presume che l'omissione del modificatore potrebbe essere solo accidentale. –

8

Rimuovere il privato e chiedete al vostro colleghi sviluppatori se sono confusi o non

Personalmente mi sento, tra cui privati ​​rendere il codice più leggibile. Vorrei dare più importanza al "leggibilità" di "essere più pulito"

+2

Altro _readable_ codice _is_ _cleaner_. Cleaner non è (necessariamente) più corto! –

0

Spetta al compilatore come interpretare metodi o altri membri della classe, senza privata, protetta o pubblica. Può essere cambiato nella versione nex. Quindi non farlo.

+4

Questo sarebbe un cambio _breaking_ ... –

+1

In realtà, in VB6 le procedure sono pubbliche per impostazione predefinita. Ciò è cambiato in VB.Net. Sì, cambio di rottura. Chi non ha dichiarato il proprio ambito del metodo ha avuto molto lavoro da fare durante la migrazione del codice VB6 su VB.Net. – DOK

3

In una base di codici in cui la roba pubblica è una perdita di informazioni (ad esempio non verrà più offuscata), si desidera che public sporga. La rimozione di private ha anche lo stesso effetto di 'marea che esce' su protected e altra visibilità eccessivamente elevata.

Idealmente si userebbe una regola StyleCop o simile per rendere il codice effettivamente coerente (anche se, come con tutte le regole del codice, dovrebbe essere effettivamente concordato tra gli sviluppatori prima che qualcuno arrivi a una conclusione su di esso).

(BTW tuo contesa nella premessa re supporto di CodeRush per omissione non è corretto - le opzioni consentono di impostare il metodo di visibilità, ecc essere o private (OOTB) o 'default' (non si specifica nulla)).

+0

Ruben: puoi indicarmi dove posso rendere "privato" non visualizzato nelle opzioni DevExpress per CodeRush? – Neal

+0

DevExpress \ Opzioni - Editor \ Codice Stile \ Scope - Metodi: Seleziona "Predefinito" –

+0

@RoryBecker grazie per essere entrato. Mentre siamo qui, ho capito che esisteva solo perché ero maledettamente interessato ed ero al mio terzo giro di ogni menu di opzioni in là. Il problema è che "Default" significa poco. Non conosco la soluzione, ma forse dovrebbe dire 'Predefinito (nessuna parola chiave emessa)' o qualcosa del genere? (Sì, lo so è più che probabile tecnicamente il termine corretto rispetto allo standard lang) –

Problemi correlati