# Nomenclatura Geral ### **Nomenclatura** ##### **Componentes** Os componentes possuem seus prefixos utilizando letras que remetem ao nome completo da classe do componente. Componentes herdados dos componentes listados e sem conexão ao banco de dados devem possuir o mesmo prefixo do componente principal, com exceção dos componentes visuais com conexão ao banco de dados, que utilizam o prefixo “DB“ seguido do padrão identificado logo abaixo. Exemplo: DBED\_Nome é um componente da classe TDBEdit, responsável pela representação de um nome. Seguem alguns exemplos de prefixos padrões utilizados:
ED\_: TEdit; TS\_: TTabSheet;
PN\_: TPanel;RB\_: TRadioButton;
GB\_: TGroupBox;OD\_: TOpenDialog;
LB\_: TLabel;SD\_: TSaveDialog;
MM\_: TMemo;Q\_: TQuery, TFDQuery;
BT\_: TButton (Botões num geral);DS\_: TDataSource;
CK\_: TCheckBox;CDS\_: TClientDataSet;
CB\_: TComboBox;DSP\_: TDataSetProvider;
LT\_: TListBox;T\_: TTable;
RG\_: TRadioGroup;FR\_: TFrxReport;
PC\_: TPageControl;FDS\_: TFrxDBDataSet;
TB\_: TToolBar;RV\_: TRvProject;
GD\_: TGrid;DSC\_: TRvDataSetConnection;
MI\_: TMenuItem;SH\_: TShape
IM\_: TImageTM\_: TTimer
Exemplo de componentes visuais com conexão ao banco de dados:
DBED\_: TDBEdit;DBGD\_: TDBGrid;
DBCK\_: TDBCheckBox;DBRG\_: TDRadioGroup;
##### **Variáveis** O nome da variável deve descrever de maneira clara e sem abreviações a função da variável. Utilizar a notação PascalCase para o nome da variável. As variáveis podem ter ainda um prefixo para adicionar mais informações sobre sua origem. Para **variáveis locais** utiliza-se o prefixo **‘L’**, para **argumentos (Parâmetros) de métodos** utiliza-se o **'A’**. Para **atributos (Field)** de classes utiliza-se o **‘F’**. ```PASCAL type TPessoa = class protected FNome: String; // Campo nome da classe Pessoa. Prefixo F public constructor Create(ANome: String); // Argumento do método. Prefixo A. end; implementation constructor TPessoa.Create(ANome: String); var LNome: String; // Variável local. Prefixo L begin end; ``` ##### **Constantes** Para nomes de constantes, o padrão utilizado é: ```PASCAL const NOME_DA_CONSTANTE_1 = 0; NOME_DA_CONSTANTE_2 = False; NOME_DA_CONSTANTE_3 = ‘Teste’; ``` O tipo da constante é deduzido através do valor dessa constante no momento da declaração. Porém, é possível declarar explicitamente um tipo para as constantes, e em alguns casos, como o de arrays, é necessário que esse tipo seja declarado. ```PASCAL const NOME_DA_CONSTANTE_4: Double = 10; NOME_DA_CONSTANTE_5: array [1..2] of String = (‘a’, ‘b’); ``` ##### **Métodos** Assim como o nome das variáveis, o nome do método deve seguir o mesmo modelo, com nomes que descrevem a função do método, utilizando também a notação PascalCase. Ao editar um método, é importante manter sua função original, caso sua funcionalidade seja alterada, deve-se refatorar o seu nome para que permaneça fiel ao seu comportamento. **Exemplo 1: Criar um método que faça a confirmação de um rotina de gravação. Sem retorno e sem argumentos.** ```PASCAL procedure ConfirmarGravacao(); ``` **Exemplo 2: Criar um método que faça o cálculo da área de um retângulo. Seu retorno será um inteiro, esse método terá ainda dois argumentos, altura e largura.** ```PASCAL function CalcularArea(AAltura, ALargura: Integer): Integer; ``` ##### **Units** As units padrões utilizadas anteriormente para as entidades eram nomeadas acrescentando 1, 2, 3 ou 4. Para facilitar o entendimento na leitura do nome da unit, elas passam a ser utilizadas no singular, seguido do nome de sua funcionalidade. Por exemplo, a entidade “Empresa” passa a ser utilizada como: ● Empresas1: Empresa.Manutencao; ● Empresas2: Empresa.Cadastro; ● Empresas3: Empresa.Pesquisa; ● Empresas4: Empresa.DataModule; Para units que tenham outra função que não se enquadrem nessas descritas anteriormente, o padrão é utilizar o nome da entidade seguido da descrição de sua função. Exemplo: Empresa.Copiar. ##### **Classes** O padrão Delphi para nome de classes aconselha que ela inicie com o prefixo T (*Type*). É aconselhável que o nome dessas classes sejam descritivos quanto à sua entidade, função e/ou tipo. Por exemplo, uma classe que define a entidade produtos poderia ter o nome *TProdutoModelo*, enquanto o formulário para importação desses produtos poderia ser *TProdutoImportacaoFormulario.*