O cliente pode não se interessar se o código de um sistema esta bem ou mal escrito, mas nós devemos ter essa preocupação - até porque, com um código limpo, a entrega para o cliente fica mais fácil.
Aqui vão algumas práticas que ajudam a melhorar a produtividade de um projeto. Obs.: iremos fazer nivelamento da equipe, então não se preocupem se aparecerem coisas que ainda não viram.
Regra básica
Pense antes de sair loucamente desenvolvendo. Faça um esquema, escreva em papel. Divida o seu problema em problemas menores, e em como tais problemas se ligam.
Nomes
- Tudo em Pt-BR. listRecurso, findCaminho... isso confunde bastante.
- Vamos respeitar os padrões de nomeação usados no Java/Javascript:
classes - substantivos, com a primeira letra de cada palavra em maiúscula: Investigador, OcorrenciaCrime.
instâncias - em minúscula. Pessoa pessoa = new Pessoa().
métodos - devem ser um verbo, seguido ou não por substantivos, com a primeira letra da primeira palavra em minúscula e as demais primeiras letras em maísculas: executarConsulta, cancelar.
variáveis - primeira em minúscula, demais primeiras em maíscula. int nome, Date horaOcorrencia
constantes - sempre em maiúsculas, com palavras separadas por underscores.
- Os nomes devem ser descritivos e concisos. Coisas como float x1, class AdcCnt... NÃO EXISTIRÃO
Métodos, funções
- Métodos e funções têm papeis específicos. Se o seu método parseia uma string, pega os cookies da página e acessa o banco, você tem TRÊS métodos, e invoca eles quando necessário.
- Blocos de código devem ser curtos sempre que possível. Se o seu bloco tem mais do que 50 linhas, considere reafatorar.
Estrutura
- Identação sempre!,
- Separação de código: evite declarar atributos de objetos HTML no HTML, isso é função do CSS. Da mesma forma, o CSS deve ser declarado apenas em arquivos .css, senão surgem páginas HTML contendo CSS, Javascript, C#, etc.
- Separação de responsabilidades: como iremos adotar o padrão MVC, deve ficar muito claro o que cada coisa faz. A camada de Models, por exemplo, deve apenas refletir as tabelas do banco de dados; se for necessário, deve-se criar uma ViewModel para armazenar os dados necessários.