Regras Gerais: * KISS - Keep it Simple Stupid * DRY - Don't repeat yourself * Manter o código mais limpo do que encontrou * Sempre encontre a causa raiz Regras de Design: * Mantenha dados de configuração em altos níveis * Prefira polimorfismo do que if/else ou switch/case * Separe código multi-thread * Use async como sufixo * Evite o excesso de configurações * Use injeção de dependência * Uma classe só deve ter ciência de suas dependências diretas * Escolha nomes descritivos e não ambíguos * Faça distinções significativas * Use nomes pronunciáveis * Use constantes ao invés de magic numbers * Mantenha o escopo pequeno * Faça uma coisa só * Prefira poucos parâmetros * Sempre tente se explicar no código * Não comente código obsoleto * Comentários apenas para clarificar o código * Mantenha as linhas curtas * Esconda estrutura interna Regras para tratamento de exceções: - Implemente Try-catch primeiro; - Utilize exceções ao invés de código; - Utilize exceções não verificadas; - Forneça exceções com contexto; - Defina classes de exceção; - Defina o fluxo normal; - Não retorne null. - Não passe null.