Fazer uma última revisão do seu código através de um checklist é uma boa prática que permite otimizar e pegar erros ocultos ou não identificados no processo de testes.
Uma lista de verificação é um hábito saudável que já me salvou de diversos embaraços. Quando você pensa que já esta tudo pronto e testado, faça um checklist e você pode se surpreender com os resultados.
Neste artigo eu apresento alguns itens que podem compor a sua lista de verificação do seu código C#.
Fazendo o checklist
Elimine os alertas do projeto (Project Warnings):
- Muita gente pensa assim: “Alerta não é erro.” ou ainda “Depois eu removo os alertas…”
- Alerta é alerta e deve ser tratado como tal. Para não ser surpreendido por um erro de difícil solução esteja certo de que todos os alertas sejam removidos do código.
Rode o Code Analysis no projeto para eliminar os alertas
- O Code Analysis esta disponível a partir do VS 2010 e se você não tem Visual Studio pode usar o FxCop (FxCop é um aplicativo que analisa o código gerenciado dos assemblies gerando relatório com informações que ajudam a otimizar o código.)S
Remova todos as declarações using não utilizadas
Evite referências nulas (null) sem tratamento específico
- Verificar se o tratamento dos null na aplicação não esta gerando uma exceção de referência nula em tempo de execução
Use convenções de nomes para variáveis, parâmetros, métodos, classes, etc.
- Sugestão: Para variáveis e parâmetros: Camel casing (Ex: produtoID, dataNascimento) , e para métodos e classe : Pascal casing. (Ex: CalcularValorDoImposto() )
- Referência: http://msdn.microsoft.com/en-us/library/ms229043.aspx
Esteja certo de que o seu código utiliza os princípios SOLID
- A palavra SOLID é um acróstico onde cada letra significa a sigla de um princípio: SRP, OCP, LSP, ISP e DIP
- Referência: http://www.macoratti.net/11/05/pa_solid.htm
Garanta a reusabilidade do código
- Extraia um método se o mesmo trecho de código está sendo usado mais de uma vez, ou você espera que ele seja usado no futuro. Faça alguns métodos genéricos para tarefas repetitivas e coloque-os em uma classe relacionada para que outros desenvolvedores comecem a usá-los. Desenvolva controles de usuário para funções comuns de modo que eles possam ser reutilizados em todo o projeto.
- Referências: http://msdn.microsoft.com/en-us/library/office/aa140806(v=office.10).aspx e http://blogs.msdn.com/b/frice/archive/2004/06/11/153709.aspx
Verifique a consistência do código
- Pequenos detalhes podem tornar o código inconsistente. Usar String e string ou int e Int32 dependendo do cenário pode levar a resultados diferentes.
Garanta a clareza do código
- Verifique se o código esta claro de forma a ser entendido por outros desenvolvedores
Verifique se os recursos usados estão sendo liberados
- Banco de dados, arquivos, recursos de rede, etc. A utilização destes recursos devem ser sempre liberadas.
- Referência: http://msdn.microsoft.com/en-us/library/498928w2.aspx
Implemente sempre o tratamento de exceção usando o bloco try/catch/finally
-
Referências:
Verifique que os métodos tenham uma única responsabilidades e usem pouco código (no máximo 50 linhas).
Evite laços for/foreach e if aninhados e realize testes unitários
- Referência: http://www.macoratti.net/08/08/tst_sw2.htm
Utilize StringBuilder ao invés de string para operações de concatenação com strings
- Referência: http://www.macoratti.net/10/09/c_ocod1.htm
Utilize classes sealed , static ou abstract quando pertinente
- Referência: http://www.macoratti.net/12/01/c_stc1.htm
Utilize interfaces sempre que possível para ter um código desacoplado
Elimine conversões de tipos e conversões forçadas
Verifique a existência de código inalcançável (unreachable code) e corrija
Escreva comentários no cabeçalho de todos os métodos descrevendo o seu uso e os parâmetros usados
- Referências : http://www.macoratti.net/11/01/net_dxml.htm
Verifique a utilização correta dos modificadores de acesso (private, public, protected, internal, protected internal)
- Referências : http://msdn.microsoft.com/en-us/library/kktasw36.aspx
Verifique a utilização correta das palavras chaves: var , object e dynamic
- Referências : http://www.macoratti.net/11/10/net_din1.htm
Verifique se seu código esta sujeito injeção SQL
- Referências : http://www.macoratti.net/sql_inj.htm
Considere a arquitetura usada na sua aplicação
- Referências : http://www.macoratti.net/12/11/net_arq1.htm e .NET – Considerações sobre arquitetura e desenho … – Macoratti.net
Utilize constantes e a palavra-chave readonly sempre que possível