Como é que os seus padrões de codificação documento alterado quando você atualizado para C # 3.0 / VS2008?
-
19-08-2019 - |
Pergunta
Estamos no processo de atualização de nossos projetos de C # 2.0 / VS2005 para C # 3.0 / VS2008. Como parte da atualização, estamos adicionando alguns itens para o nosso documento de padrões de codificação.
Como seria (ou se) você mudar o seu documento de padrões de codificação quando a atualização do C # 2.0 / VS2005 para C # 3.0 / VS2008?
Solução
Você poderia / deveria dar conselhos sobre: ??
- Quando usar consulta expressões vs dot notação
- As restrições sobre o uso de expressões lambda (por exemplo, "não modifique variáveis ??capturados). (Isso também poderia se aplicar a métodos anônimos em C # 2 é claro.)
- Quando a escrever métodos de extensão
- Quando usar variáveis ??digitadas implicitamente (
var
)
A última duas delas causa alguma controvérsia, principalmente var
.
Se suas convenções dar quaisquer diretrizes de design, eu sugiro que você também aconselham os programadores a considerar o uso de delegados para a especialização onde anteriormente eles poderiam ter herança ou interfaces utilizadas. Um bom exemplo disto é a classificação -. É mais fácil (e mais legível) para usar uma projeção para especificar uma ordem de classificação do que escrever uma implementação de IComparer<T>
Outras dicas
A atualização coincidiu com um novo projeto, então quando nos mudamos que começamos a usar ferramentas como o StyleCop e o FxCop que alteraram os nossos padrões de codificação. Também com folga impõe-lhes também: o)
Nada deve mudar por si só devido à actualização, embora você pode precisar de olhar para padrões de codificação em torno de novas funcionalidades, tais como expressões LINQ, layout, Lambda contra sintaxe de consulta.
A minha implicância pessoal é o uso de var
onde quer "possível".
"possível" que está sendo definido atualmente como um dos seguintes casos, a maioria em ordem decrescente de asseio:
Óbvio, ajudando DRY:
var obj1 = new Something();
var obj2 = (Something)ObscureFunction();
var obj3 = ObscureStuff() as Something;
guardado, eu não me importo, desde que compila:
var obj4 = ObscureFunction();
foreach(Something s in obj4) { ... }
Os genéricos complexos e quase qualquer resultado LINQ:
var obj5 = ctx.GetQuery<Something>()..ToList(..)..GroupJoin(..)...ToLookup(...);
Os meus padrões para novos recursos para 2008:
- Use com moderação var apenas com tipos anônimos.
- Estimular o uso de expressões lambda mais delegados.
- Use somente os métodos de extensão quando você não tem o controle do código-fonte