terralib:padraocodigo
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
| terralib:padraocodigo [2008/04/01 14:55] – laercio | terralib:padraocodigo [2008/04/02 14:32] (atual) – laercio | ||
|---|---|---|---|
| Linha 4: | Linha 4: | ||
| ===== Padronização de Nomes ===== | ===== Padronização de Nomes ===== | ||
| [[C: | [[C: | ||
| + | |||
| + | |||
| ===== Padronização de Código ===== | ===== Padronização de Código ===== | ||
| - | [[C: | + | [[C: |
| ===== Padronização de Documentação DOxygen ===== | ===== Padronização de Documentação DOxygen ===== | ||
| + | [[padraodocumentacao|Comentários para documentação com DOxygen.]] | ||
| ===== Convenção de Programação ===== | ===== Convenção de Programação ===== | ||
| + | [[convencaoprograma|Recomendações para programação em C++]] | ||
| - | ===== Resumo e Exemplos ===== | ||
| - | ===== Padronização de Nomes ===== | ||
| - | ===== 1. Arquivo ===== | + | ===== Resumo |
| - | + | [[resumo|Resumo]] | |
| - | + | ||
| - | + | ||
| - | ==== 1.1 Nome ==== | + | |
| - | * UpperCamelCase + prefixo **Te** | + | |
| - | * Extensão **.h** | + | |
| - | * Mesmo nome da classe, estrutura ou namespace do seu conteúdo | + | |
| - | * Para siglas usar todas as letras em maiúsculas | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== 1.2 Estrutura ==== | + | |
| - | * ''< | + | |
| - | * Máximo de 80 colunas por linha | + | |
| - | * Uma classe ou estrutura por arquivo | + | |
| - | * Toda a implentação deve estar no **.cpp** exceto as funções e métodos '' | + | |
| - | * Identação com 2 espaços ao invés da tabulação | + | |
| - | * Todo **.h** deve ter a macro associada ao arquivo | + | |
| - | * Ordem no **.h**: | + | |
| - | - Definição da macro associada ao arquivo | + | |
| - | - Definição de outras macros | + | |
| - | - Inclusão de arquivos | + | |
| - | - Includes de arquivos C | + | |
| - | - Includes de arquivos locais | + | |
| - | - Includes de arquivos de plataforma | + | |
| - | - Includes de arquivos STL | + | |
| - | - Declaração forward | + | |
| - | - Namespace | + | |
| - | * Inclusão de arquivos | + | |
| - | * Usar ''< | + | |
| - | * Usar path relativo | + | |
| - | * Usar explicitamente os namespace externos. Ex: // | + | |
| - | // | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== 1.3 Comentário ==== | + | |
| - | * Todo **.h** terá um cabeçalho padrão contendo informações sobre licença, parceiros, etc. | + | |
| - | * Os comentários para gerar a documentação DOxygen: | + | |
| - | * Devem seguir o estilo Qt (http:// | + | |
| - | * Devem seguir o padrão abaixo e ter no mínimo as tags **\file**, **\brief** e **\author**: | + | |
| - | <code cpp> | + | |
| - | /*! | + | |
| - | \file file name | + | |
| - | \brief | + | |
| - | Brief description continued. | + | |
| - | + | ||
| - | More detailed description. | + | |
| - | + | ||
| - | \author (?) | + | |
| - | */ | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== 1.4 Exemplo | + | |
| - | [[terralib: | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ===== 2. Macro ===== | + | |
| - | + | ||
| - | ==== Nome ==== | + | |
| - | * Usar prefixo //TE_// | + | |
| - | * Usar UPPERCASE e underscores //(_)// para separar palavras | + | |
| - | * Para macros associadas a arquivos **.h** usar a extensão como sufixo //_H// | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Comentário ==== | + | |
| - | O comentário para gerar a documentacao DOxygen deve seguir o padrão abaixo. A descrição breve | + | |
| - | é obrigatória e a descrição detalhada é opcional no caso de macros: | + | |
| - | <code cpp> | + | |
| - | //! A brief description. | + | |
| - | /*! | + | |
| - | A more elaborate description. | + | |
| - | */ | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | ==== Exemplo ==== | + | |
| - | < | + | |
| - | #ifndef TE_CONNECTION_POOL_H | + | |
| - | #define TE_CONNECTION_POOL_H | + | |
| - | .... | + | |
| - | #define TE_MAX_FLOAT 3.4e37 | + | |
| - | .... | + | |
| - | #endif //end TE_CONNECTION_POOL_H | + | |
| - | </ | + | |
| - | + | ||
| - | [[terralib: | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | ===== Namespace ===== | + | |
| - | Usar sempre o namespace **TerraLib** para todo o kernel. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Comentário ==== | + | |
| - | O comentário para gerar a documentacao DOxygen deve seguir o padrão abaixo. A descrição breve | + | |
| - | é obrigatória e a descrição detalhada é opcional no caso de namespace: | + | |
| - | <code cpp> | + | |
| - | //! A brief description. | + | |
| - | /*! | + | |
| - | A more elaborate description. | + | |
| - | */ | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Exemplo ==== | + | |
| - | [[terralib: | + | |
| - | + | ||
| - | + | ||
| - | ===== Classe e Estrutura ===== | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Nome ==== | + | |
| - | * Nome | + | |
| - | * UpperCamelCase + prefixo **Te** | + | |
| - | * Usar substantivo | + | |
| - | * Usar o plural para nomes de coleções | + | |
| - | * Para siglas usar todas as letras em maiúsculas | + | |
| - | + | ||
| - | * Nome dos membros | + | |
| - | * lowerCamelCase + sufixo " | + | |
| - | + | ||
| - | * Nome dos métodos | + | |
| - | * lowerCamelCase | + | |
| - | * Usar sempre os prefixos " | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Estrutura ==== | + | |
| - | + | ||
| - | * Os métodos e membros devem seguir a seguinte ordem: | + | |
| - | - Métodos públicos | + | |
| - | - Métodos protegidos | + | |
| - | - Métodos privados | + | |
| - | - Membros protegidos | + | |
| - | - Membros públicos | + | |
| - | * Usar explicitamente a palavra // | + | |
| - | * No valor de retorno dos métodos usar sempre que possível //const// e referência | + | |
| - | * Usar //const// nos métodos que não alteram o estado do objeto, ou seja, que não alteram os valores dos membros | + | |
| - | * Nos parâmetros dos métodos usar sempre que possível //const// e referência | + | |
| - | * Sempre usar nomes nos parâmetros | + | |
| - | * Quando o método retorna uma estrutura, essa deve ser passada como parâmetro do método por referência. Nesse caso, o método não deve limpar essa estrutura antes de preenchê-la | + | |
| - | * Usar “other” para nomes de parâmetros nos construtores de cópia e operadores de atribuição | + | |
| - | * Usar os mesmos nomes dos membros nos métodos que os acessam diretamente | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Comentário ==== | + | |
| - | * Os comentários para gerar a documentação DOxygen: | + | |
| - | * Devem seguir o estilo Qt (http:// | + | |
| - | + | ||
| - | === Classe e Estrutura === | + | |
| - | * No caso de classes e estruturas é obrigatório colocar as descrições breve e detalhada. A tag **\sa** é opcional: | + | |
| - | + | ||
| - | <code cpp> | + | |
| - | //! A brief description of class or struct. | + | |
| - | /*! | + | |
| - | A more elaborate description of class or struct. | + | |
| - | | + | |
| - | */ | + | |
| - | </ | + | |
| - | + | ||
| - | === Método === | + | |
| - | * Os métodos devem conter no mínimo uma descrição breve, a descrição de todos os seus parâmetros (tag **\param**) e do seu valor de retorno (tag **\return**). A descrição detalhada é opcional. | + | |
| - | + | ||
| - | <code cpp> | + | |
| - | //! A brief description. | + | |
| - | /*! | + | |
| - | A more elaborate description of class or struct. | + | |
| - | | + | |
| - | | + | |
| - | */ | + | |
| - | </ | + | |
| - | + | ||
| - | === Membro === | + | |
| - | * A descrição do membro deve vir depois de sua definição. | + | |
| - | + | ||
| - | <code cpp> | + | |
| - | int member01_; | + | |
| - | int member02_; | + | |
| - | </ | + | |
| - | ==== Exemplo ==== | + | [[terralib: |
| - | [[terralib: | + | |
| + | [[terralib: | ||
terralib/padraocodigo.1207061717.txt.gz · Última modificação: 2008/04/01 14:55 por laercio
