Estilo C#:As propriedades podem ser agrupadas com seus campos de apoio?
-
16-11-2019 - |
Pergunta
Gosto de organizar propriedades simples como esta:
private int foo;
public int Foo
{
get { return foo; }
set
{
// validate value
foo = value;
}
}
Eu estive brincando com EstiloCop, e grita comigo por colocar campos depois dos construtores.Esse estilo é geralmente aceito, desde que o campo nunca seja referenciado fora da propriedade?Observação:Sei que há uma preferência pessoal envolvida, mas pergunto-me se existe um consenso geral relativamente a esta questão.
Solução
Sim, isso me parece razoável.
Normalmente coloco todos os campos e propriedades no topo, depois os construtores e depois os métodos - mas se você quiser colocá-los depois dos construtores, isso também parece razoável.
Outras dicas
Se suas propriedades terão acesso simples a dados, considere usar propriedades automáticas:
public int Foo { get; set; }
O compilador criará uma variável de membro privada nos bastidores em seu nome.
Especificamente para sua pergunta, não dê muita importância a ferramentas como ReSharper ou StyleCop.Algumas das maneiras como eles formatam o código e as coisas das quais reclamam são realmente uma questão de preferência.Não coloco as variáveis-membro perto de suas propriedades públicas, mas posso ver como isso seria conveniente.
Poderia?Como isso afeta apenas as pessoas da sua equipe, você precisa descobrir o que eles acham que é melhor e seguir em frente.Style Cop costuma ser um pouco...exagerado em suas recomendações.
Eu costumo colocá-los depois do imóvel, pois o espaço acima é reservado para documentação.
// placed up here, it looks kinda weird, imho
// private int foo;
/// <summary>
/// The index of the Foo in the <see cref="Bar"/>
/// </summary>
public int Foo
{
get { return foo; }
set
{
// validate value
foo = value;
}
}
private int foo;
Pode ser uma questão de preferência, mas parece melhor do que misturá-los com membros privados.
Eu normalmente uso uma região aninhada para apoiar campos dentro da região de propriedades, pois ela não interfere nos comentários do Visual Studio e ainda assim eles são agrupados.