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:50] – laercio | terralib:padraocodigo [2008/04/02 14:32] (atual) – laercio | ||
---|---|---|---|
Linha 3: | Linha 3: | ||
===== Padronização de Nomes ===== | ===== Padronização de Nomes ===== | ||
+ | [[C: | ||
- | ===== 1. Arquivo | + | ===== Padronização de Código |
+ | [[C: | ||
- | ==== 1.1 Nome ==== | + | ===== Padronização de Documentação DOxygen ===== |
- | * UpperCamelCase + prefixo **Te** | + | [[padraodocumentacao|Comentários para documentação com DOxygen.]] |
- | * Extensão **.h** e **.cpp** | + | |
- | * Mesmo nome da classe, estrutura ou namespace do seu conteúdo | + | |
- | * Para siglas usar todas as letras em maiúsculas | + | |
+ | ===== Convenção de Programação ===== | ||
+ | [[convencaoprograma|Recomendações para programação em C++]] | ||
- | ==== 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: // | ||
- | // | ||
+ | ===== Resumo e Exemplos ===== | ||
+ | [[resumo|Resumo]] | ||
+ | [[terralib: | ||
- | + | [[terralib:exemplo2|Exemplo | |
- | + | ||
- | + | ||
- | ==== 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:exemplo1|Veja exemplo]] | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ===== 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 ==== | + | |
- | + | ||
- | | + | |
- | - Métodos públicos | + | |
- | - Métodos protegidos | + | |
- | - Métodos privados | + | |
- | - Membros protegidos | + | |
- | - Membros públicos | + | |
- | | + | |
- | * 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: | + | |
- | + | ||
- | < | + | |
- | //! 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 | + | |
- | + | ||
- | <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/padraocodigo.1207061455.txt.gz · Última modificação: 2008/04/01 14:50 por laercio