Domanda

Ho davvero apprezzato la possibilità di definire le regioni nel codice, in quanto migliora la leggibilità follemente.

In ogni modo, mi piacerebbe avere tutti utilizzando il stessa convenzione in tutte le classi (con l'ordine predefinito di tutte le regioni), come:

  • Privato Campi
  • Costruttori
  • proprietà della classe
  • gestori di eventi
  • ecc ...

Avete qualche proposta come questa divisione potrebbe apparire come (Che regioni hanno un senso e quali nomi dovrebbero avere) e in quale ordine dovrebbe essi essere definito?

È stato utile?

Soluzione

Il mio convenzione è non usarli.

Se trovate la vostra classe diventando troppo grande in modo tale che è necessario per nascondere vaste parti di esso attraverso le regioni vi propongo la classe è troppo complessa e deve essere spezzato.

Altri suggerimenti

Qualcuno ha detto che avere una convenzione come quella di cui sopra:

  
      
  • Privato Campi
  •   
  • Costruttori
  •   
  • proprietà della classe
  •   
  • gestori di eventi
  •   
  • ecc ...
  •   

è come impostazione di una tabella in cui tutte le piastre sono insieme, tutti i cucchiai sono insieme, tutti i coltelli sono insieme e tutte le forcelle sono insieme.

La mia opinione sulla questione #region è quello di mettere relativi metodi, le definizioni degli eventi, e le proprietà insieme in una regione. Tuttavia, avendo a che fare questo a tutti indicherebbe un odore di codice (sia la classe è troppo grande o fa troppe cose), ma questo è un buon primo passo verso il refactoring in una classe migliore.

Ogni volta che vedo le regioni penso che il codice viene generato sia o che hanno bisogno di ri-factoring.

Evitare l'uso di loro e quando si sente il bisogno per loro, ri-esaminare quello che stai facendo e cercare di dividere la classe a quelli più piccoli. In definitiva questo aiuto volontà con la leggibilità dell'applicazione più di utilizzare regioni volontà.

Personalmente non voglio raccomandare rendere le regioni codice parte della vostra convention codice. Il motivo principale è che regioni nascondono codice , che potrebbe potenzialmente portare a problemi come:

  • Gli sviluppatori potrebbe perdere alcuni importanti parte del codice sorgente
  • La media quantità di LOC nello stesso file tende ad aumentare

Se siete interessati a far rispettare una convenzione stile di codifica nella vostra squadra, dare un'occhiata alla Microsoft StyleCop . Si noti che lo strumento attualmente funziona solo per C #.

#region Lotsa boring code and lookup tables

Io lo uso per risparmiare spazio sullo schermo, niente altro:)

Io uso le seguenti regioni:

Private Member Variables
Constructor
Public Properties
Private Methods
Public Methods
Events

Il motivo è a causa di una migliore organizzazione di codice.
Io lavoro con i file che può avere più di 2000 linee di codice ed è molto difficile mantenere il codice senza regioni.

Credo che non c'è bisogno nelle regioni. Loro non sono leggibili. Se avete bisogno di (pensa, si fa davvero bisogno?) Un codice di quantità nella classe, si può usare 'parziale' di classe per dividere le unità logiche di classe.

pensare a loro come un'altra forma di commenti: informazioni aggiuntive mescolato con il tuo codice, che ha alcun controllo formale effettuato su di esso . Quindi è probabile che deriva non aggiornati con il codice.

Quindi, MAI duplicati nei commenti o direttive regione ciò che è già indicato nel codice.

aggiungere solo le informazioni supplementari.

In particolare, utilizzando regioni ribadire il fatto che alcuni membri sono proprietà, eventi, ecc è completamente inutile. Il più comune problema c'è che si crea una zona di "metodi privati", e quindi si modifica uno di loro per renderlo pubblico. Ora si deve spostare, il che significa che in un diff con la vecchia versione, il semplice cambiamento è molto più difficile da discernere.

Si potrebbe essere interessato a questo ti dico di no a C # regioni .

Credo che così a lungo come si sta dall'altra parte consistente del progetto non importa troppo che ordinare loro in scrittura. Anche essere molto molto cauti di loro un uso eccessivo (da qui il link iniziale!).

Non c'è niente di peggio che trovare una regione costruttore chiuso che si nasconde una sola riga di codice.

Credo che alla fine si è scesi a gusto personale. Come ho detto, la coerenza è la chiave!

Ho scritto il mio codice regionale frammento di VS 2008, che io uso sempre:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
    <Header>
        <Title>#class region</Title>
        <Shortcut>#classregion</Shortcut>
        <Description>Code snippet for #region in classes</Description>
        <Author>Simon Linder</Author>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>
        <Declarations>
            <Literal>
                <ID>name</ID>
                <ToolTip>Region name</ToolTip>
                <Default>MyRegion</Default>
            </Literal>
        </Declarations>
        <Code Language="csharp">
            <![CDATA[#region Variables
                    $selected$ $end$
                #endregion

            #region Construction/Destruction
                    $selected$ $end$
                #endregion

            #region Properties
                    $selected$ $end$
                #endregion

            #region Public Methods 
                    $selected$ $end$
                #endregion

            #region Private/Proteced Methods
                    $selected$ $end$
                #endregion]]>
        </Code>
    </Snippet>
</CodeSnippet>

Come si può vedere che faccio regioni uso di metodi Variables, Construction/Destruction, Properties, Public e Private. Mi capita spesso di aggiungere un altro sub-regione nella regione privata chiamata events. L'ordine delle regioni funziona anche bene con StyleCop .

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