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
twsg:dicas:code_conventions [2009/01/07 14:55]
emerson
twsg:dicas:code_conventions [2009/03/28 22:00] (current)
emerson
Line 26: Line 26:
  
 Estes componentes são discutidos brevemente nas subseções seguintes. Estes componentes são discutidos brevemente nas subseções seguintes.
 +
 +
  
 ==== License header ==== ==== License header ====
Line 53: Line 55:
 </​code>​ </​code>​
  
 +Para adicionar o //License header// a um conjunto de arquivos já existentes numa pasta, você pode usar o seguinte comando no Linux: <code bash>
 +for i in `find . -name "​*.js"​`;​ do cp $i $i.bkp; cat ../​header.txt $i.bkp > $i; rm -f $i.bkp; done
 +</​code>​
 +Apenas altere o ''​*.js''​ para a extensão dos seus arquivos e crie o arquivo ''​header.txt''​ na pasta abaixo, com o conteúdo descrito neste tópico. Para personalizar ainda mais o comando basta olhar o funcionamento do comando ''​find''​ do shell. Por exemplo, você quer colocar o //License header// em todos os arquivos .h e .cpp de uma pasta, então você pode criar o ''​header.txt''​ com o conteúdo correto (lembrar de deixar uma linha em branco no final) e executar o seguinte comando nesta pasta: <code bash>
 +for i in `find . -name "​*.h"​ -or -name "​*.cpp"​`;​ do cp $i $i.bkp; cat header.txt $i.bkp > $i; rm -f $i.bkp; done
 +</​code>​
  
 ==== File identification ==== ==== File identification ====
Line 65: Line 73:
  */  */
 </​code>​ </​code>​
 +
  
  
Line 70: Line 79:
 ==== Header file guard ==== ==== Header file guard ====
  
-As convenções do File header guard estão descritas no documento de referência. A pŕincipal ​alteração é a troca do prefixo ''​OGWS''​ por ''​TERRAOGC'',​ segundo exemplo abaixo:+As convenções do File header guard estão descritas no documento de referência. A principal ​alteração é a troca do prefixo ''​OGWS''​ por ''​TERRAOGC'',​ segundo exemplo abaixo:
 <code cpp> <code cpp>
 #​ifndef ​ __TERRAOGC_COMMON_INTERNAL_TECGIUTILS_H #​ifndef ​ __TERRAOGC_COMMON_INTERNAL_TECGIUTILS_H
Line 76: Line 85:
  
 </​code>​ </​code>​
 +
  
 ==== Includes section ==== ==== Includes section ====
  
-==== Classes ​declaration ====+A seção de includes deve seguir os seguintes princípios:​ 
 +  - Usar, sempre que possível, //forward declarations//​ 
 +  - Colocar primeiro os arquivos do mesmo pacotes (diretório fonte) através de aspas 
 +  - Colocar depois os arquivos de outros pacotes (outros diretórios) através de ''<''​ e ''>''​ 
 +  - Iniciar cada lista de pacotes (inclusive do atual) com um comentário 
 + 
 +Exemplo: 
 +<code cpp> 
 +// TerraOGC WFS Utils include files 
 +#include "​TeWFSUtilsConfig.h"​ 
 + 
 +// TerraOGC GML include files 
 +#include <​gml/​TeGMLQuerier.h>​ 
 + 
 +// Shapelib include files 
 +#include <​shapefil.h>​ 
 + 
 +</​code>​ 
 + 
 +==== Namespace ​declaration ==== 
 + 
 +Apenas inserir a declaração do namespace padrão do grupo. As //forward declarations//​ ocorrem antes e/ou depois desta declaração,​ dependendo do namespace ao qual as classes pertencem. Veja os exemplos: 
 + 
 +  - Namespace sem //forward declarations//:​ <code cpp> 
 + 
 +namespace TeOGC 
 +
 + 
 +</​code>​ 
 +  - Namespace com //forward declarations//:​ <code cpp> 
 +// Forward declarations 
 +class TeTable; 
 + 
 +namespace TeOGC 
 +
 +    // Forward declarations 
 +    class TeWFSInsertElement;​ 
 +    class TeWFSUpdateElement;​ 
 + 
 + 
 +</​code>​ 
 + 
 +==== Classes and Functions declarations ==== 
 + 
 +Seguir o manual. Existem vários exemplos no próprio CVS.
  
-==== Functions declaration ==== 
  
 ==== End header file ==== ==== End header file ====
  
-==== Level 3 Headline ====+Apenas um fecho para o arquivo. Contém o final das declarações do namespace e do file header guard. Exemplo: 
 +<code cpp> 
 +}    // end namespace TeOGC 
 + 
 +#​endif ​ // __TERRAOGC_COMMON_INTERNAL_TECGIUTILS_H 
 + 
 + 
 +</​code>​ 
 +Sempre lembrar de deixar **uma linha em branco** no final do arquivo 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
  
  

Navigation