# Pautas (Maio)

#### **Padrão de Código (Delphi) e Refatorações**

##### **Quebra de linha em operação aritmética**

```PASCAL
// Opção A
begin
  Objeto.Atributo := 
    LQuery.FieldByName('Campo').AsFloat + 
      LVariavelDouble +
      LOutraVariavelDouble;
end;

// Opção B
begin
  Objeto.Atributo := 
    LQuery.FieldByName('Campo').AsFloat + 
    LVariavelDouble +
    LOutraVariavelDouble;
end;

// Opção C
begin
  Objeto.Atributo := 
    LQuery.FieldByName('Campo').AsFloat + 
      LVariavelDouble +
        LOutraVariavelDouble;
end;
```

Definir padrão para:

Operações com apenas um tipo de operador

Operações com vários tipos de operadores

##### **Utilização de constantes**

```PASCAL
// Declaração "padrão"

// Opção A
// Unit separada por tópico (Entidade.Constantes.pas)

// Opção B
// Mesma unit, escopo global

// Opção C
// Declaração inicial no mínimo escopo viável, "evoluindo" conforme sua expansão

//**********************************************//

// Método de refatoração

// Opção A
// Pontual (Apenas onde será alterado)

// Opção B
// Por método (Em todas as ocorrências no método alterado)

// Opção C
// Por unit (Em todas as ocorrências na unit alterada)

```

---

#### **Padrão SQL**

##### **Indentação INSERT INTO**

```SQL
// Opção A
INSERT INTO Tabela
            (CampoA, CampoB, CampoC, CampoD,
             CampoE, CampoF)
     VALUES (:PA, :PB, :PC, :PD, :PE, :PF)
     
// Opção B
INSERT
  INTO Tabela
       (CampoA, CampoB, CampoC, CampoD,
        CampoE, CampoF)
VALUES (:PA, :PB, :PC, :PD, :PE, :PF)
```

##### **Indentação DISTINCT**

```SQL
/* Encontrar "média" comum */
/* 
Tabela: Carros
Campos: (PK)Placa, Modelo, Ano
Condição de busca: Um modelo por ano no intervalo de 2000-2021
*/
```

##### **Formalização de indentação com múltiplos operadores lógicos**

```SQL
SELECT *
  FROM Tabela
 WHERE CampoA = :ParametroA
   AND (   CampoB = :ParametroB
        OR CampoC = :ParametroC)
```