Skip to main content

Espaçamento

Regras para Formatação Horizontal 

Tabulação: Utilizar 2 caracteres (espaços) ao invés da tabulação.

Para manter a estrutura do código de modo que sua leitura seja fácil, o número máximo de caracteres por linha é 100. Caso a expressão ultrapasse esse comprimento, a linha deve ser quebrada segundo essas regras:

  1. A linha tem comparações? ('a = b', 'a <> b', 'a <= b', 'a >= b', 'a < b' ou 'a > b')
    1.  Envolver cada comparação com parênteses. 
  2. A linha contem negação? ('not')
    1. Envolver cada negação com um parênteses.
  3. A linha contém operadores lógicos? ('and' e 'or')
    1. Envolver cada sequência de 'and' com um parênteses;

    2. Envolver cada sequência de 'or' com um parênteses.
  4. A linha é uma atribuição? (':=')
    1. Adicionar uma quebra de linha após o sinal de atribuição (':='), alinhar a nova linha com a linha original e indentar em um nível (2 espaços);
    2. Caso o código resultante não tenha ultrapassado a linha das 100 colunas, processo pode ser interrompido;
    3. Caso a atribuição seja uma String, ela pode ser quebrada em uma ou mais concatenações. Essas podem ser quebradas e alinhadas com a linha original, adicionando um nível de indentação;
    4. Caso a atribuição seja uma comparação (Não considerar comparações dentro de métodos aninhados), adicionar uma quebra de linha após o sinal de comparação ('=', '<>', '<=', '>=', '<' ou '>'), e alinhar a nova linha com o primeiro operando.
  5. A linha tem um 'if'?
    1. Caso a condição do if não tenha um parênteses envolvendo a condição inteira, envolvê-la com um;
    2. Adicionar uma quebra de linha após cada operador 'and' ou 'or';
    3. Após cada quebra de linha, alinhar a nova linha com o parênteses onde ela está contida e adicionar um espaço;
    4. Caso o código resultante não tenha ultrapassado a linha das 100 colunas, processo pode ser interrompido;
    5. Caso alguma das condições do if tenha uma comparação (Não considerar comparações dentro de métodos aninhados), adicionar uma quebra de linha após o sinal de comparação ('=', '<>', '<=', '>=', '<' ou '>'), e alinhar a nova linha com o primeiro operando.
    6. Caso o código resultante não tenha ultrapassado a linha das 100 colunas, processo pode ser interrompido.
  6. A linha contém métodos aninhados?
    1. Aplicar essa regra do métodos mais externo para o mais interno;
    2. Adicionar uma quebra de linha exatamente antes do início do método aninhado;
    3. Alinhar a nova linha com o método onde ela está contida (Caso o método tenha uma negação (not), alinhar com o início dessa negação), adicionar ainda um nível de indentação (2 espaços);
    4. Caso o código resultante não tenha ultrapassado a linha das 100 colunas, processo pode ser interrompido.
  7. A linha contém parâmetros?
    1. Ao realizar a quebra de linha de um parâmetro, ele deve estar indentado um nível (2 espaços) em relação ao nível do método proprietário do parâmetro (caso o método proprietário tenha uma negação (not), alinhar com o início dessa negação);
    2. Caso o código resultante não tenha ultrapassado a linha das 100 colunas, processo pode ser interrompido.
  8. Após todas essas etapas a linha ainda ultrapassa a marca de 100 colunas?
    1. Caso ainda assim, a linha ultrapasse a marca de 100 colunas então deve-se verificar a existência de pontos na expressão (“.”), sendo que, ao realizar esse tipo de quebra de linha, o ponto deve ficar com a expressão na linha inferior, indentado em um nível em relação ao início da expressão.

Observação: Algumas vezes, quando uma linha ultrapassa as 100 colunas, é um sinal de que esse trecho pode ser refatorado. O programador pode então refatorar, se julgar que é necessário ou melhor.

Declaração de variáveis (Deixarei os dois modelos para decidirmos mais tarde)

Correto

var
  LTeste: Integer;

Incorreto

var
  LTeste : Integer;
  LTeste :Integer;
Atribuições

Correto

LTeste := 15;

Incorreto

LTeste:=15; 
LTeste:= 15; 
LTeste :=15; 
Entre o método, parâmetro e parênteses

Correto

procedure Ex(AParametro: Integer); 
procedure Ex(AParametro1, AParametro2: Integer); 
procedure Ex(AParametro: Integer; AParametro2: String); 

Incorreto

procedure Ex (AParametro1: Integer); 
procedure Ex( AParametro: Integer); 
procedure Ex(AParametro: Integer ); 
procedure Ex(AParametro1,AParametro2: Integer); 
procedure Ex(AParametro1 , AParametro2: Integer); 
procedure Ex(AParametro: Integer;AParametro2: String); 
procedure Ex(AParametro: Integer ; AParametro2: String); 
Matriz não possui espaçamento entre o nome, colchetes e valor

Correto

LTeste := LMatriz[0];

Incorreto

LTeste := LMatriz[ 0]; 
LTeste := LMatriz[0 ]; 
LTeste := LMatriz[ 0 ];
Uso de operadores binários

Correto

LTeste := 1 + 1;

Incorreto

LTeste := 1+1; 
LTeste := 1 +1; 
LTeste := 1+ 1; 
Operadores unários

Correto

LTeste := -1;

Incorreto

LTeste := 1+1; 
LTeste := 1 +1; 
LTeste := 1+ 1; 
Subrotinas devem possuir 4 caracteres de espaçamento

Correto

function MeuMetodo: String;

    procedure SubMetodo;
    begin
      //Código SubMetodo
    end;
    
begin
  //Código MeuMetodo
end;

Incorreto

function MeuMetodo: String;

procedure SubMetodo;
begin
  //Código SubMetodo
end;
begin
  //Código MeuMetodo
end;
function MeuMetodo: String;

  procedure SubMetodo;
  begin
    //Código SubMetodo
  end;
  
begin
  //Código MeuMetodo
end;