Pergunta

Eu realmente aprecio a possibilidade de definir regiões em seu código, pois melhora a legibilidade de maneira insanamente.

De qualquer forma, eu gostaria de ter todo mundo usando o mesma convenção em todas as classes (com a ordem predefinida de todas as regiões) como:

  • Campos privados
  • Construtores
  • Propriedades de classe
  • Manipuladores de eventos
  • etc ...

Você tem alguma proposição de como essa divisão poderia ser (que regiões têm sentido e que nomes devem ter) e em que ordem eles devem ser definidos?

Foi útil?

Solução

Minha convenção não é usá -los.

Se você achar que sua classe fica muito grande, de modo que precisa ocultar vastas partes dela através de regiões, proponho que sua classe seja muito complexa e deve ser separada.

Outras dicas

Alguém disse uma vez que ter uma convenção como a acima:

  • Campos privados
  • Construtores
  • Propriedades de classe
  • Manipuladores de eventos
  • etc ...

é como definir uma tabela onde todas as placas estão juntas, todas as colheres estão juntas, todas as facas estão juntas e todos os garfos estão juntos.

Minha opinião sobre o #region A questão é montar métodos relacionados, definições de eventos e propriedades em uma região. No entanto, ter que fazer isso indicaria um cheiro de código (ou sua classe é muito grande ou faz muitas coisas), mas este é um bom primeiro passo para refatorá -la em uma classe melhor.

Sempre que vejo regiões, acho que o código é gerado ou precisa de re-formação.

Evite usá-los e, quando sentir a necessidade deles, reexamine o que está fazendo e tente dividir sua classe nos menores. Em última análise, isso ajudará com a legibilidade do aplicativo mais do que o uso de regiões.

Pessoalmente, eu não recomendaria fazer as regiões de código parte da sua convenção de código. A principal razão é que regiões oculam código, o que poderia potencialmente levar a questões como:

  • Os desenvolvedores podem perder uma parte importante do código -fonte
  • A quantidade média de loc no mesmo arquivo tende a aumentar

Se você estiver interessado em impor uma convenção de estilo de codificação em sua equipe, dê uma olhada Microsoft Stylecop. Observe que a ferramenta atualmente funciona apenas para C#.

#region Lotsa boring code and lookup tables

Eu o uso para salvar a tela imobiliária, nada mais :)

Eu uso as seguintes regiões:

Private Member Variables
Constructor
Public Properties
Private Methods
Public Methods
Events

O motivo é por causa da melhor organização do código.
Eu trabalho com arquivos que podem ter mais de 2000 linhas de código e é muito difícil manter o código sem regiões.

Eu acho que não há necessidade nas regiões. Eles não são legíveis. Se você precisar (pense, você realmente precisa?) Um código de quantidade em sua classe, você pode usar a classe 'parcial' para dividir as unidades lógicas da classe.

Pense neles como outra forma de comentários: informações adicionais misturadas com seu código, que tem Nenhuma verificação formal realizada nele. Portanto, provavelmente será desatualizado com o código.

Portanto, nunca duplique em comentários ou diretrizes de região o que já está declarado no código.

Adicione apenas informações extras.

Em particular, o uso de regiões para reafirmar o fato de que certos membros são propriedades, eventos etc. são completamente inúteis. O problema mais comum é que você cria uma região para "métodos privados" e, em seguida, edita um deles para torná -lo público. Agora você precisa movê -lo, o que significa que, em um diferencial com a versão antiga, a mudança simples é muito mais difícil de discernir.

Você pode estar interessado nisso Você diz não para regiões C#.

Eu acho que, desde que você seja consistente no seu projeto, isso não importa muito qual ordem você os escreva. Também seja muito cauteloso em usá -los (daí o link inicial!).

Não há nada pior do que encontrar uma região do construtor fechado que está escondendo apenas uma linha de código.

Eu acho que, no final, se deve ao gosto pessoal. Como eu disse, a consistência é a chave!

Eu escrevi meu próprio snippet de código de região para o VS 2008, que sempre uso:

<?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>

Como você pode ver, eu uso regiões para Variables, Construction/Destruction, Properties, Public e Private métodos. Costumo adicionar outra sub-região à região privada chamada events. A ordem das regiões também funciona bem com Stylecop.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top