Boas práticas para programação Delphi

O uso de um estilo padronizado de codificação quando adotamos uma linguagem de programação é muito importante para mantermos a qualidade de um software. Estes padrões tornam o código mais legível e organizado e a manutenção do mesmo se torna fácil, consequentemente aumentando o clico de vida do mesmo. Lembre-se que o código do software é mantido por toda a equipe, portando todos devem ter facilidade em entendê-lo.

Muitas vezes estes padrões são disponibilizados pelos próprios fabricantes de compiladores, como no caso da Embarcadero que fornece o Object Pascal Style Guide.

Vamos ver alguns dos estilos recomendados por eles, vou disponibilizar aqui alguns trechos traduzidos:

Nomeação de arquivos fontes:

O objeto Pascal suporta nomes de arquivo longos. Se você estiver utilizando nomes compostos para criar um único nome, então é melhor usar letras maiúsculas para cada palavra no nome: MeuArquivo.pas. Isso é conhecido como InfixCaps, ou Camel Caps. As extensões devem ser em minúsculas.

Declaração de classes e interfaces:

Uma declaração de classe começa com dois espaços, seguido de um identificador prefaciado por um T. maiúsculo. Os identificadores devem começar com uma letra maiúscula e devem ter letras maiúsculas para cada palavra incorporada (InfixCaps). Nunca use caracteres de tabulação em sua fonte Pascal de objetos. Exemplo:

TMinhaClasse

Siga o identificador com um espaço, então um sinal de igual, então a classe de palavra, tudo em minúsculas:

TMinhaClasse = classe

Se você quiser especificar o antepassado de uma classe, adicione um parêntese, o nome da classe ancestral e o parêntese de fechamento:

TMinhaClasse = classe (TObject)

Diretivas de escopo devem ser dois espaços dentro da margem e declaradas na ordem mostrada neste exemplo:

TMinhaClasse = class(TObject)

private

protected

public

published

end;

Os dados devem sempre ser declarados somente na seção privada, e seu identificador deve ser prefaciado por um F. Todas as declarações de tipo devem ser quatro espaços dentro da margem:

TMinhaClasse = classe (TObject)

private

FMyData: Integer;

function GetData: Integer;

procedure SetData (Value: Integer);

public

published

proprty MyData: Integer read GetData write SetData;

Interfaces seguem as mesmas regras que as declarações de classe, exceto que você deve omitir quaisquer diretivas de escopo ou dados particulares e deve usar a interface de palavra em vez de classe.

Declarações

As declarações são uma ou mais linhas de código seguidas por um ponto-e-vírgula. Declarações simples têm um ponto-e-vírgula, enquanto as instruções compostas têm mais de um ponto-e-vírgula e, portanto, consistem em várias instruções simples.

Aqui está uma declaração simples:

A: = B;

Aqui está uma declaração composta ou estruturada:

begin

B: = C;

A: = B;

end;

Declarações simples

Uma instrução simples contém um único ponto-e-vírgula. Se você precisa quebrar a instrução, recuar a segunda linha dois espaços na linha anterior:

MyValue: =

MyValue + (SomeVeryLongStatement / OtherLongStatement);

Declarações compostas

As declarações compostas sempre terminam com um ponto-e-vírgula, a menos que elas precedam imediatamente uma instrução final, caso em que o ponto e vírgula é opcional.

Begin

MyStatement;

MyNextStatement;

MyLastStatement // ponto-e-vírgula opcional

end;

Declarações de atribuição e expressão

Cada linha deve conter no máximo uma instrução. Por exemplo:

A: = b + c;  Inc (Contagem);  // INCORRETA

A: = b + c;  // UM LUGAR PARA OUTRO

Inc (Contagem);  // UM LUGAR PARA OUTRO

Declarações de variáveis locais

As variáveis locais devem ter Camel Caps, ou seja, devem começar com uma letra maiúscula e ter letras maiúsculas para o início de cada palavra embutida. Não prefácio nomes de variáveis com um F, como essa convenção é reservada para campos em uma declaração de classe:

Var

MyData: Integer;

MyString: string;

Você pode declarar vários identificadores do mesmo tipo em uma única linha:

Var

ArraySize, ArrayCount: Integer;

Esta prática é desencorajada nas declarações de classe. Lá você deve colocar cada campo em uma linha separada, juntamente com o seu tipo.

Bom, já deu para ter uma ideia do quanto é importante seguir um padrão para sua codificação. Para mais detalhes acesse o guia disponível no site da Embarcadero.