Como é que os seus padrões de codificação documento alterado quando você atualizado para C # 3.0 / VS2008?

StackOverflow https://stackoverflow.com/questions/339952

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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top