Padrões de Codificação

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (3)  (0)

Neste artigo será mostrado parte do padrão de códificação usado no Delphi.

Padrões de Codificação


Por que usar um padrão de codificação?

 

A organização do código fonte facilita os processos de desenvolvimento, retirada de bugs, atividades de validação e manutenção.  O uso de um padrão de codificação também aumenta a produtividade num projeto, uma vez que a comunicação dentro da equipe de desenvolvimento fica mais fácil, mas vale ressaltar que partes desses padrões são vistas, algumas vezes, como sugestões por empresas que adotam seus próprios padrões.

 

- Comentários : Usamos as chaves - { }- para iniciar e terminar um comentário com mais de uma linha, esse tipo de comentário é comum para se informar dados gerais e específicos de Unit e métodos, vindo no seu inicio.  Dentro dos comentários com chaves não devemos usar asteriscos, símbolos ou caracteres especiais.  Outro tipo de comentário usado é a barra de data digitada duplamente - // - neste caso o comentário se ressume a uma linha, devendo ser dado um espaço após a segunda barra para começar o texto desejado.

 

- Indentação : Ato de separar os níveis de codificação por espaços em branco.  No caso da Linguagem Delphi a indentação deve ter dois espaços, não se podendo usar tabulação.

 

Observação1

As palavras reservadas program, unit, interface, uses, type, var, implementation, initialization, finalization e end. não podem ser indentadas.

Observação2

Se desejar indentar várias linhas simultaneamente, selecione-as e em seguida pressione Ctrl+Shift+I que a IDE faz a indentação automaticamente.  Caso precise remover uma indentação de um código selecionado pressione Ctrl+Shift+U.

 

- Espaços em branco : Os espaços em branco, assim com a linhas, ajudam na legibilidade do código, mas existem as exceções:

   * Entre o método e o parâmetro de abertura:

           procedure CalcularSalario(ID_Funcionario: integer); // Correto

           procedure CalcularSalario (ID_Funcionario: integer); // Incorreto

   * Após um parêntese de abertura ou antes de um parêntese de fechamento:

           procedure CalcularSalario(ID_Funcionario: integer); // Correto

           procedure CalcularSalario( ID_Funcionario: integer); // Incorreto

           procedure CalcularSalario(ID_Funcionario: integer ); // Incorreto

           procedure CalcularSalario( ID_Funcionario: integer ); // Incorreto

   * Após um colchete de abertura ou antes de um colchete de fechamento:

           Valor := Matriz[1] // Correto

           Valor := Matriz[ 1] // Incorreto

           Valor := Matriz[1 ] // Incorreto

           Valor := Matriz[ 1 ] // Incorreto

   * Entre um operador unário(+ ou -) e o seu operando:

           Valor := -1 // Correto

           Valor := - 1 // Incorreto

   * Antes ou depois de um operador ponto( . ):

           Button1.Caption := ‘Correto’; // Correto

           Button1. Caption := ‘Incorreto’; // Incorreto

           Button1 .Caption := ‘Incorreto’; // Incorreto

           Button1 . Caption := ‘Incorreto’; // Incorreto

   * Antes de uma virgula:

           Variav1, Variav2: Integer; // Correto

           Variav1 , Variav2: Integer; // Incorreto

   * Antes de dois pontos:

           Variav1, Variav2: Integer; // Correto

           Variav1, Variav2 : Integer; // Incorreto

   * Antes de ponto e virgula:

           Variav1, Variav2: Integer; // Correto

           Variav1, Variav2: Integer ; // Incorreto

  

- if,  for, while, repeat, try, with : Devem estar em mais de uma linha e indentado entre os níveis.  Quando houver begin o mesmo deve estar em uma nova linha e o seu end deve estar no mesmo nível.

Exemplo :

if Teste then

  Valor := 10;

 

if not Teste then

begin

  Valor1 := 10;

  Valor2 := 20;

end;

 

for I := 0 to ValorFinal do

begin

  Valor[I] := ValorFinal * I;

end;

 

while Tabela.Eof do

begin

  ShowMessage(Tabela.FieldByName(‘Nome’).AsString);

  Tabela.Next;

end;

 

repeat

  Inc(Valor);

until Valor > 10;

 

try

  try

    Tabela.Open;

    Form1.ShowModal;

  finally

    Tabela.Close;

  end;

except

  ShowMessage(‘Localizado um erro’);

end;

 

with Tabela do

begin

  Append;

  FieldByName(‘Nome’).AsString := ‘Tadeu Pereira’;

  Post;

end;

 

- case : As opções ficam num nível abaixo do case, sendo assim elas devem estar indentadas.  Caso seja necessário usar o begin, o mesmo deve ser indentado em consideração a opção.  O bloco de comandos deve estar indentado em consideração ao begin.

Exemplo :

case Controle of

  0..9: Valor := Controle * 3;

  10: Valor := Controle * 2;

  else Valor := Controle;

end;

 

case Objeto.Color of

  clBlack:

    begin

      ShowMessage(‘A cor é preta’);

    end;

  clWhite:

    begin

      ShowMessage(‘A cor é branca’);

    end;

end;

 

- Quebras de linha : A linha deve ter no máximo oitenta caracteres, se for ultrapassado esse limite a linha deve ser quebrada.  As linhas seguintes devem ser indentadas e quebradas da mesma maneira.

 

- Organização de Classes :

   Quanto aos níveis : Primeiro devem ser feita as declarações em private seguidas pelas feitas em  protected, public e published.

   Quanto a ordenação : Primeiro os campos, seguido pelos métodos e por fim as propriedades.

 


Convenções de nomenclatura

 

As convenções adotas para fazer nomeação na Linguagem Delphi é uma seção a parte, uma vez que o padrão muda de acordo com o que se deseja atribuir o nome.

 

- Arquivos : O nome do arquivo deve ser iniciado com letra maiúscula e o restante deve ter letras minúsculas, salvo os casos em que esse nome é composto por mais de uma palavra, nesse caso cada palavra deve iniciar com letra maiúscula acompanhada por letras minúsculas – chamamos esse uso de maiúsculas e minúsculas de camel caps ou infix caps.  A extensão do arquivo deve conter apenas letras minúsculas.

   Exemplo : Cadastro.pas – UntPrincipal.dfm – MeuSistema.dpr

 

- Classes : A classe deve ser iniciada pela letra T maiúscula acompanhada pelo nome seguindo o padrão infix caps.

   Exemplo : TNovaClasse – TPessoa – TDiario

 

- Campos : Semelhante a classe, só que nesse caso devemos trocar a letra T pela letra F também maiúscula.

Exemplo : FNome – FCidade – FLimiteCompra

 

- Métodos : Os métodos devem ter nomes de verbos no imperativo e seguir o padrão de infix caps.

   Exemplo : CalcularSalario(); – GravarNome(); – VerificarLimite();

 

- Parâmetros : Também semelhante a classe, e assim como os campos trocamos a letra T, só que nesse caso pela letra A maiúscula.  Esse padrão é uma sugestão que a própria VCL não a segue completamente, sendo usada como opcional.

   Exemplo : NomeMétodo(AParam1, AParam2: Integer; AParam3: string);

 

- Variáveis : Deve seguir o padrão Infix caps.

 

- Constantes : Assim como as variáveis, as constantes seguem o padrão Infix caps.

 

- Tipos enumerados : As iniciais fixas dos valores possíveis dos tipos enumerados devem começar com letras minúsculas, o restante deve seguir o padrão Infix caps.

   Exemplo : TAlignment = (taLeftJustify, taRightJustify, taCenter);

 

Este artigo foi cedido por http://www.cassic.com.br/

 

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?