next up previous contents
Next: Referências Up: Desenvolvimento de Aplicações Previous: Implementação   Sumário

Estilo de programação C++

Um dos principais objetivos de C ++ é reduzir a ocorrência de erros em e facilitar a manutenção de projetos de software. Para atingir estes objetivos de forma efetiva, entretanto, não basta simplesmente usar C ++. É preciso usá-lo de forma consistente, livres de erros comuns e com programas que sejam fáceis de ler e entender, mesmo por outros programadores que não o autor original.

A seguir, são apresentadas algumas recomendações que, sendo seguidas durante o desenvolvimento da aplicação, podem auxiliar que este objetivo seja alcançado.

  1. Otimize código apenas quando você sabe que você tem um problema de desempenho, Pense duas vezes antes de fazê-lo.

  2. Um arquivo de cabeçalho não deve conter mais do que uma definição de classe.

  3. Se há código na sua aplicação que depende da máquina onde a aplicação será executada, coloque este código em um arquivo isolado, de forma que seja fácil localizá-lo quando transferir sua aplicação para outra máquina.

  4. Todo arquivo que contém código fonte deve ser documentado com comentários introdutórios dando informação sobre o nome do arquivo e seu conteúdo.

  5. Todos arquivos devem incluir informação de copyright.

  6. Escreva comentários descritivos antes de cada função.

  7. Todo arquivo de cabeçalho deve conter o mecanismo para evitar múltiplas inclusões do mesmo arquivo.

  8. Escolha nomes de variáveis que sugiram o seu uso.

  9. Na definição de classes, ordene a declaração de seções na ordem: pública, protegida, privativa.

  10. Não define funções membro dentro da definição da classe.

  11. Sempre explicite o tipo de retorno de uma função.

  12. Não especifique dados na seção pública de uma classe.

  13. Funções pequenas (por exemplo, simplesmente retornar um valor de um membro da classe) devem ser definidas como função em linha.

  14. Contrutores e destrutores não devem ser definidos como funções em linha.

  15. Uma função membro que não afeta o estado de um objeto deve ser declarada como const.

  16. Se um construtor de uma classe usa new, então um construtor de cópia deve ser fornecido para esta classe.

  17. Uma classe que usa new para alocar instâncias gerenciadas pela classe deve definir um operador de atibuição.

  18. Use sobrecarga de operadores com parcimônia e de maneira uniforme.

  19. Quando dois operadores têm usualmente significados opostos (como == e !=), é apropriado definir ambos.

  20. Evite funções com muitos argumentos.

  21. Evite o uso de número variável de argumentos.

  22. Quando sobrecarregando funções, todas as variações devem ter a mesma semântica, isto é, devem ser usadas para o mesmo fim.

  23. Uma função pública nunca deve retornar uma referência ou um apontador para uma variável local.

  24. Evite funções longas e complexas.

  25. Não use a diretiva de processador #define para definir macros; prefira a definição de funções em linha.

  26. Define constantes usando const ou enum; nunca use #define.

  27. Evite o uso de valores numéricos no código; dê preferência ao uso de valores simbólicos.

  28. Variáveis devem ser declaradas dentro do menor escopo possível.

  29. Toda variável que é declarada deve receber um valor antes de ser utilizada.

  30. Evite o uso de apontadores para apontadores.

  31. Evite o uso de conversões explícitas de tipos (casts).

  32. Não escreva código que dependa de funções que usam conversão implícita de tipos.

  33. O código após um case deve sempre ser seguido por um comando break.

  34. Um comando switch deve sempre ter uma opção default para manipular casos inesperados.

  35. Nunca use goto.

  36. Sempre use unsigned para uma variável que se espera que não vá assumir valores negativos.

  37. Evite o uso de continue.

  38. O uso de break para sair de laços deve ser preferido ao uso de variáveis de flag.

  39. Use parênteses para deixar claro a ordem de avaliação de operadores em expressões.

  40. Não use malloc, realloc ou free.

  41. Sempre use colchetes vazios ([]) quando removendo arranjos com delete.

  42. Evite usar dados globais.

  43. Não aloque memória esperando que outro alguém irá desalocá-la mais tarde.

  44. Verifique os códigos de falhas de funções de bibliotecas por mais seguro que as chamadas possam parecer.

  45. Não assuma que um int tem 32 bits ou que tem o mesmo tamanho de um long ou de um apontador.

  46. Não assuma que você sabe como um certo tipo de dado é representado em memória.


next up previous contents
Next: Referências Up: Desenvolvimento de Aplicações Previous: Implementação   Sumário
Ivan Luiz Marques Ricarte 2001-06-01