Padrão de nomes

Em projetos que existem um time de desenvolvimento e um desenvolvedor depende de outros para construir um sistema, uma padronização no código deve ser tomada como regra para o bem comum do projeto.

Não estou dizendo que os desenvolvedores devem ficar moldados a regras e não podem experimentar novas possibilidades. Mas que se necessário e possível, seja feito com o consentimento de todos.

Caso do Problema

Vamos usar um exemplo, que com certeza ocorre em muitas empresas. Um desenvolvedor, que cumpria todas as tarefas muito bem, dentro do prazo e funcionalidades exigidas. O qual, nunca passou pela sua cabeça sair da empresa, em um momento inesperado precisa sair da mesma. Até ai tudo bem, mas logo após deste fato, ocorre algum problema em umas das tarefas desenvolvidas por ele e você como desenvolvedor foi encarregado de corrigir esse pequeno bug.

Ao abrir o código para manutenção, você nota que aquilo que estava funcionando muito bem, na verdade estava uma completa bagunça.

Imaginem como uma simples correção pode se tornar tão complicado, que é possível pensar que seja mais fácil refazer esta tarefa, do que entender toda essa bagunça para conseguir corrigir o bug.

Solução

Desde o .NET Framework 1.1 a Microsoft disponibiliza no MSDN um Guia de Nomenclaturas, que indica uma série de padrões para nomes.

http://msdn.microsoft.com/en-us/library/xzf533w0(v=vs.71).aspx#feedback

Estilos de Capitalização

Utilize o seguinte 3 estilos de convenções para as capitalizações.

Pascal case A primeira letra do identificador e a primeira letra de cada palavra concatenada subsequente forem capitalizados. Você pode usar caso Pascal para identificadores de três ou mais caracteres. Por exemplo: BackColor
Camel case A primeira letra de um identificador é minúscula ea primeira letra de cada palavra concatenada subsequente é maiúscula. Por exemplo: backColor
Uppercase Todas as letras no identificador são capitalizados. Use esta convenção apenas para identificadores que consistem em duas ou menos letras. Por exemplo: System.IO

System.Web.UI

A seguinte tabela resume as regras de capitalização e disponibiliza exemplos de diferentes tipos de capitalização.

Identificador Case Exemplo
 Classes  Pascal  OrdemDeServico
 Enum  Pascal  Situacao
 Eventos  Pascal  AlteracaoDoValor
 Read-only, Estático  Pascal  ValorVermelho
 Interfaces  Pascal  IRepositorio (Sempre com prefixo 'I')
 Métodos  Pascal  BuscarPeloNome
 Namespace  Pascal  Projeto.Dados.Repositorio
 Parâmetro  Camel  dataNascimento
 Propriedade  Pascal  DataNascimento
 Atributo  Camel  dataCadastro
     
     

Abreviações

Para evitar confusão, siga estas regras relativa a utilização de abreviaturas:

 

Evitando a Confusão com Nomes e Tipos

Use nomes que descrevem o significado de um tipo ao invés de nomes que descrevem o tipo. No caso raro que um parâmetro não tem significado semântico para além do seu tipo, usar um nome genérico. Por exemplo:

Errado Certo
 public Pessoa BuscarPessoa(string stringNome);  public Pessoa BuscarPessoa(string nome);
 public int CalcularImc(int intPeso, double doubleAltura);  public int CalcularImc(int peso, double altura);

Namespace

Uma regra comum para a nomenclatura de namespaces é utilizar o nome da empresa seguido pelo nome da tecnologia ou camada de um projeto e opcionalmente pela funcionalidade e design.

NomeEmpresa.NomeTecnologia[.Funcionalidade][.Design]

Por exemplo:

Tam.Dados
Tam.Dados.Repositorios

Não utilize o mesmo nome para um namespace e uma classe. Um namespace chamado Tam.Dados e uma classe chamada Dados.

Nome de Classes

public class Pessoa

Nome de Interfaces

public interface IValidador

Nome de Enums

Nome de Campos Estáticos

  • Utilize substantivos ou abreviações de substantivos para campos estáticos.
  • Utilize Pascal case.
  • Não utilize a notação Hungara para nomes de campos estáticos.
  • É recomendado que utilize propriedades estáticas ao invés de campos estáticos.
 
Referências:
http://msdn.microsoft.com/en-us/library/ab6a8y1b(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/4df752aw(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/fzcth91k(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/h0eyck3s(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/04xykw57(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/426s83c3(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/9cws5bzd(v=vs.71).aspx
http://msdn.microsoft.com/en-us/library/czefa0ke(v=vs.71).aspx