Mudanças entre as edições de "Guidelines de Implementação"
(→Funções e [http://pt.wikipedia.org/wiki/Método_(engenharia_de_software) Métodos]) |
(→Identação) |
||
| Linha 50: | Linha 50: | ||
*Deve-se usar a auto identação de código que acompanha a maioria das IDE’s e editores. A identação deve ser feita com o caracter <TAB>. | *Deve-se usar a auto identação de código que acompanha a maioria das IDE’s e editores. A identação deve ser feita com o caracter <TAB>. | ||
*As sentenças dentro da sentença composta devem ser identadas com uma tabulação a mais. | *As sentenças dentro da sentença composta devem ser identadas com uma tabulação a mais. | ||
| − | + | Exemplos: | |
'''<font color=#7A0000>void</font>''' | '''<font color=#7A0000>void</font>''' | ||
some_function() | some_function() | ||
| Linha 64: | Linha 64: | ||
} | } | ||
| + | ==== Largura das Linhas ==== | ||
| + | Evite linhas com mais de 100 caracteres, pois elas não são bem apresentadas em alguns tipos de monitores e ferramentas. | ||
| + | |||
| + | ==== Quebra de Linhas ==== | ||
| + | Quando uma expressão não couber em uma única linha, quebrar a linha segundo os princípios gerais: | ||
| + | *Quebre depois de uma vírgula; | ||
| + | *Alinhe a nova linha ao início da expressão com o mesmo nível na linha anterior; | ||
| + | *Quebre depois de um operador; | ||
| + | |||
| + | Exemplos: | ||
| + | <font color=#007A00>//Função com grande número de parâmetros</font> | ||
| + | '''<font color=#7A0000>void</font>''' | ||
| + | another_some_function('''<font color=#7A0000>int</font>''' too_long_expression_1, '''<font color=#7A0000>int</font>''' too_long_expression_2, '''<font color=#7A0000>int</font>''' too_long_expression_3, | ||
| + | '''<font color=#7A0000>int</font>''' too_long_expression_4, '''<font color=#7A0000>int</font>''' too_long_expression_5); | ||
| + | { | ||
| + | the_variable = another_some_function_1(too_long_expression_1, | ||
| + | another_some_function_2(too_long_expression_2, | ||
| + | too_long_expression_3)); | ||
| + | } | ||
| + | |||
| + | <font color=#007A00>//Expressões Aritméticas:</font> | ||
| + | a_big_long_name_1 = a_big_long_name_2 * (a_big_long_name_3 + a_big_long_name_4 - a_big_long_name_5) + | ||
| + | 4 * a_big_long_name_6;<font color=#007A00> // FORMA DESEJÁVEL</font> | ||
| + | <font color=#FF0000> | ||
| + | a_big_long_name_1 = a_big_long_name_2 * (a_big_long_name_3 + a_big_long_name_4 - | ||
| + | a_big_long_name_5) + 4 * a_big_long_name_6;</font><font color=#007A00> // EVITE</font> | ||
| + | |||
| + | <font color=#007A00>//Senteça Condicional if:</font> | ||
| + | <font color=#7A0000>'''if'''</font> ((boolean_expression_1 && boolean_expression_2) || | ||
| + | (boolean_expression_3 && boolean_expression_4) || | ||
| + | !(boolean_expression_5 && boolean_expression_6)) | ||
| + | { | ||
| + | do_something(); | ||
| + | } | ||
== Comentários == | == Comentários == | ||
Edição das 08h54min de 20 de fevereiro de 2009
Índice
Introdução
Este documento estabelece o padrão de codificação de códigos-fonte para o projeto SCAE.
Regra Número 1
Quando você não puder encontrar uma orientação ou uma regra que se aplique ao seu caso; ou ainda, quando uma regra não se aplicar, ou mais obviamente, ou quando tudo falhar: use o senso comum e verifique os princípios fundamentais. Esta regra prevalece sobre todas as outras. O senso comum é necessário mesmo quando existem regras e orientações.
Variáveis
Os nomes das variáveis devem obedecer às seguintes regras:
- Todas as variáveis devem ser declaradas no início da função.
- Todas as letras devem ser minúsculas, sendo que as palavras são separadas por underscore (_);
- O nome da variável tem que ser o mais claro possível. Abreviações não devem ser utilizadas;
- Nomes de variáveis globais devem ser precedidas da letra “g” em minúsculo e undercore (ex: g_line_number ).
Constantes
Os nomes das constantes de classe devem ser todos em maiúsculas, com palavras separadas por underscore (“_”).Exemplo:
#define TABLE_WIDTH 90
Funções e Métodos
Os nomes das funções ou métodos devem obedecer às seguintes regras:
- Devem ser em inglês;
- Todas as letras devem ser minúsculas, sendo que as palavras são separadas por underscore (_);
- Para as funções ou métodos de atribuição e obtenção do valor de alguma variável, deve-se usar as palavras set e get, respectivamente, antes da palavra em inglês;
- O nome da função ou método tem que ser o mais claro possível, Não utilizar abreviações (ex: utilizar get_table_from_dictionary() ao invés de get_tb_f_dic() );
- Métodos são separados por duas (2) linhas em branco.
- A declaração de uma função deve ser da seguinte forma:
- primeira linha contém o tipo de retorno (ex: void)
- segunda linha o nome da função ou método e seus parâmetros
Exemplo:
void
some_function()
{
...
}
int
sum_integer(int first_integer, int second_integer)
{
...
}
Estrutura
- A chave de abertura “{ “ de qualquer bloco (seja função, condicional, etc) deve estar na linha seguinte a declaração da sentença.
- A chave de fechamento deve ser o único caractere de uma linha e ser identada alinhando-se com a chave de abertura correspondente.
Identação
- Deve-se usar a auto identação de código que acompanha a maioria das IDE’s e editores. A identação deve ser feita com o caracter <TAB>.
- As sentenças dentro da sentença composta devem ser identadas com uma tabulação a mais.
Exemplos:
void
some_function()
{
int number_of_tables = 0;
int number_of_columns = 0;
int number_of_lines = 0;
if(number_of_lines == 0)
{
number_of_columns = 1;
}
}
Largura das Linhas
Evite linhas com mais de 100 caracteres, pois elas não são bem apresentadas em alguns tipos de monitores e ferramentas.
Quebra de Linhas
Quando uma expressão não couber em uma única linha, quebrar a linha segundo os princípios gerais:
- Quebre depois de uma vírgula;
- Alinhe a nova linha ao início da expressão com o mesmo nível na linha anterior;
- Quebre depois de um operador;
Exemplos:
//Função com grande número de parâmetros
void
another_some_function(int too_long_expression_1, int too_long_expression_2, int too_long_expression_3,
int too_long_expression_4, int too_long_expression_5);
{
the_variable = another_some_function_1(too_long_expression_1,
another_some_function_2(too_long_expression_2,
too_long_expression_3));
}
//Expressões Aritméticas:
a_big_long_name_1 = a_big_long_name_2 * (a_big_long_name_3 + a_big_long_name_4 - a_big_long_name_5) +
4 * a_big_long_name_6; // FORMA DESEJÁVEL
a_big_long_name_1 = a_big_long_name_2 * (a_big_long_name_3 + a_big_long_name_4 -
a_big_long_name_5) + 4 * a_big_long_name_6; // EVITE
//Senteça Condicional if:
if ((boolean_expression_1 && boolean_expression_2) ||
(boolean_expression_3 && boolean_expression_4) ||
!(boolean_expression_5 && boolean_expression_6))
{
do_something();
}
Comentários
Programas podem ter dois tipos de comentários: de implementação e de documentação. Comentários de implementação são aqueles encontrados em C++, delimitados por /*...*/ e //. Comentários de documentação ( “semelhantes à javadoc”) têm significado especial e são delimitados por /**...*/. Os comentários de documentação deverão ser aplicados somente às funções e métodos e serão processados pela ferramenta Doxygen. Esse tipo de comentário deverá seguir as seguintes regras:
- Apresentar uma descrição breve do método, sendo que o ponto (“.”) deve obrigatoriamente terminar a sentença.
- Se necessário, apresentar uma descrição mais detalhada após a descrição breve, que também deverá ser terminada com o ponto final (“.”)
- Descrever os parâmetros.
- Descrever qual será o retorno da função.
Exemplo:
/**
* Descrição breve do método (obrigatoriamente tem que terminar com um ponto).
* Caso seja necessário uma descrição mais detalhada essa deverá ser escrita
* após a descrição breve .\ Se for preciso colocar um ponto no meio da descrição,
* ele deverá preceder uma contra-barra seguida de espaço(“\ “) \. Após a
* descrição detalhada encerrar com um ponto.
* @param inss um float representando o inss
* @param quantidade_anos inteiro representando a quantidade de anos
* contribuídos
* @return um float representando o valor total contribuído durante a quantidade
* de anos informada
*/
Nota: informações sobre as tags podem ser obtidas em http://www.stack.nl/~dimitri/doxygen/commands.html
Comentários de implementação devem ser usados para :
- Desativar trechos de código
- Inserir informações a respeito da implementação particular. Neste caso:
- Eles devem complementar o código fonte, explicando o que não é óbvio.
- Eles devem ajudar o leitor a compreender a fundo os conceitos, as dependências e, sobretudo, a codificação de dados complexos ou algoritmos.
- Devem destacar: desvios de codificação ou padrões de design; o uso de features restritas e "truques" especiais.
Como regra geral, antes de inserir um comentário de implementação, responda à seguinte questão: Qual o valor que está sendo adicionado neste comentário?
Comentários de documentação devem descrever a especificação do código, de uma perspectiva independente da implementação e para ser lido por desenvolvedores que não necessariamente terão o código-fonte em mãos.
Dados de alteração de código devem ser comentados em Releases Liberadas do SCAE no momento em que as releases forem atualizadas no repositório.