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
Last revision Both sides next revision
terralib:padraocodigo [2008/04/01 11:55]
laercio
terralib:padraocodigo [2008/04/02 11:31]
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 ===== 
  
-===== 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ê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://​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