wiki:terralib
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 | ||
wiki:terralib [2008/04/01 13:23] – 150.163.3.123 | wiki:terralib [2009/08/26 11:13] (atual) – laercio | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
- | ====== | + | ====== |
- | **Padrões de Estilo para Programar em TerraLib**\\ | + | Para informações sobre a TerraLib, consulte a página do [[http:// |
+ | ===== Estilo de Programação ===== | ||
+ | [[terralib: | ||
- | ===== 1. Arquivo | + | ===== Terralib5 |
+ | [[terralib: | ||
- | + | [[terralib:Terralib5:emails|Terralib5 E-Mails]] | |
- | ==== Nome ==== | + | |
- | * UpperCamelCase + prefixo **Te** | + | |
- | * 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 | + | |
- | + | ||
- | + | ||
- | ==== 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: // | + | |
- | // | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ==== 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 (?) | + | |
- | */ | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ==== Exemplo ==== | + | |
- | [[terralib:exemplo1|Veja exemplo]] | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ===== 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: | + | |
wiki/terralib.1207056200.txt.gz · Última modificação: 2008/04/01 13:23 por 150.163.3.123