Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
terralib:padraocodigo [2008/04/01 11:55]
laercio
terralib:padraocodigo [2008/04/02 11:32]
laercio
Line 4: Line 4:
 ===== Padronização de Nomes ===== ===== Padronização de Nomes =====
 [[C:​Nomes|Padronização de nomes de arquivos, classes, estruturas, métodos, etc.]] [[C:​Nomes|Padronização de nomes de arquivos, classes, estruturas, métodos, etc.]]
 +
 +
  
  
 ===== Padronização de Código ===== ===== Padronização de Código =====
-[[C:​FormatacaoCodigo|Padrões de Estilo para Programar em TerraLib]]+[[C:​FormatacaoCodigo|Formatação do código - indentação,​ espaços, etc.]] 
  
  
 ===== 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 ===== 
-[[resumo|Resumo]] 
  
-===== Padronização de Nomes ===== 
  
  
  
 +===== Resumo e Exemplos =====
 +[[resumo|Resumo]]
  
-===== 1. Arquivo ===== +[[terralib:​exemplo1|Exemplo ​1]] - Arquivo ​**.h** com uma classe
- +
- +
- +
-==== 1.1 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 +
- +
- +
- +
-==== 1.2 Estrutura ==== +
-    * ''<​Enter>''​ na última linha +
-    * 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 ''​inline''​ e que usam templates +
-    * 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 ''<​...>''​ para externos e ''"​..."''​ para locais +
-      * Usar path relativo +
-    * Usar explicitamente os namespace externos. Ex: //​std::​string +
-// +
- +
- +
- +
- +
- +
- +
- +
- +
- +
-==== 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://​www.stack.nl/​~dimitri/​doxygen/​docblocks.html) sem os *'s intermediários  +
-       * 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 about the file. +
-            Brief description continued. +
-     +
-     More detailed description. +
- +
-    \author (?) +
-*/ +
-</​code> ​  +
-  +
- +
- +
- +
- +
- +
-==== 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. +
-*/ +
-</​code> ​  +
- +
- +
-==== Exemplo ​==== +
-<​code>​ +
-#ifndef TE_CONNECTION_POOL_H +
-#define TE_CONNECTION_POOL_H +
-.... +
-#define TE_MAX_FLOAT 3.4e37 +
-.... +
-#endif //end TE_CONNECTION_POOL_H +
-</​code>​ +
- +
-[[terralib:​exemplo1|Veja exemplo completo]] +
- +
-  +
- +
-===== 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. +
-*/ +
-</​code> ​  +
- +
-  +
- +
- +
- +
- +
-==== Exemplo ==== +
-[[terralib:​exemplo1|Veja exemplo]] +
- +
- +
-===== 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 "​get"​ e "​set"​ para acessar os membros. No caso de membro booleano, usar o prefixo "​is"​ no método para acessá-lo.  +
-        +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
-==== 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 //​public//​ +
-  * 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ênciaNesse 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://​www.stack.nl/​~dimitri/​doxygen/​docblocks.html) sem os *'s intermediários  +
-        +
-=== 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. +
-     ​\sa ​    other definitions related to the class or struct ​  +
-*/ +
-</​code> ​  +
- +
-=== 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. +
-     ​\param ​ name description +
-     ​\return description +
-*/ +
-</​code> ​  +
- +
-=== Membro === +
-    * A descrição do membro deve vir depois de sua definição. +
- +
-<code cpp> +
-int member01_; ​  //​!<​ Brief description after the member +
-int member02_; ​  //​!<​ Brief description after the member +
-</​code> ​  +
- +
- +
-==== Exemplo ==== +
-[[terralib:​exemplo1|Veja exemplo]]+
  
 +[[terralib:​exemplo2|Exemplo 2]] - Arquivo **.cpp** com uma classe

Navigation