Especificação do formulário de criação de código Delphi O objetivo desta especificação: dar ao seu código uma aparência unificada e padrão, aprimorar
Legibilidade, compreensibilidade, facilidade de manutenção
Princípio desta especificação: o nome reflete o significado, a forma reflete a estrutura
1. Estilo de unidade
2. Estilo de cada distrito
3. Estilo de declaração
4. Regras de nomenclatura
Referência: guia de estilo oficial do Object Pascal da Borland
Guia do programador Delphi5 para padrões de codificação
{ }
{nome do projeto}
{ }
{Copyright (C) 2000,2001 Nome da empresa}
{ }
{********************************************** *****}
unidadeNomedaUnidade;
{********************************************** ***
projeto:
Módulo:
descrever:
Versão:
data:
autor:
renovar:
PENDÊNCIA:
************************************************** * *****}
interface
usa
----,----,----,----,----,----,----,----,----,----, ----,
----,----, ----,----,----,----;
const
------------------;
------------------;
------------------;
tipo
------------------;
------------------;
------------------;
------------------;
------------------;
------------------;
var
------------------;
------------------;
------------------;
implementação
usa
----,----,----,----;
{$R *.RES}
{$R *.DFM}
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
fim.retorno
Comentários do tópico, descrição da finalidade dos procedimentos de função, comentários sobre instruções
Linhas em branco: Blocos de direitos autorais, entre classes, entre métodos -- (duas linhas) Blocos internos de métodos (uma linha)
Espaço: usado para aumentar a clareza
Recuo: dois espaços
----- = ----;
----- = ----;
----- = ----;
----- = ----;Extensão
Prefixo: apenas C_---;
Const.
{Tópico 1}
C_--- = ----;
C_--- = ----;
C_--- = ----;
C_--- = ----;
{Tópico 2}
----- = ----;
----- = ----;
----- = ----;
----- = ----; String de recurso, colocada após a área variável
cadeia de recursos
const
S_--- = '----';
S_--- = '----';
S_--- = '----';
Exemplo: CM_BASE = $B000;
CM_ACTIVATE = CM_BASE + 0;
CM_DEACTIVATE = CM_BASE + 1;
CM_GOTFOCUS = CM_BASE + 2;
CM_LOSTFOCUS = CM_BASE + 3;
NumPaletteEntries = 20;
BoxPoints: array[0..5, 0..2] de GLfloat =
((-1, 0, 0),
(0, 1, 0),
(1, 0, 0),
(0, -1, 0),
(0, 0, 1),
(0, 0, -1));
{Códigos de tipo de variante (wtypes.h)}
varVazio = $ 0000; { vt_empty }
varNulo = $0001;
varSmallint = $0002;
GIFVersões: array[gv87a..gv89a] de TGIVersionRec = ('87a', '89a');
T---- = ---------
Tipo de objeto -> Entidade que tem estado e fornece serviços
T---- = classe(----)
Privado
--------
--------
protegido
--------
--------
público
--------
--------
publicado
--------
--------
fim; Classificar alfabeticamentePrivado
1. Todos os dados são colocados na área Privada, começando com F
2. Os ponteiros de método correspondentes a todos os atributos do evento são colocados na área Privada, começando com F.
3. Os métodos de atributos Get e Set são colocados na área Privada --> não estão preparados para serem herdados.
4. O método para responder à mensagem é colocado na área Privada.
protegido
1. Métodos e atributos que são chamados por subclasses, mas não podem ser chamados pelo mundo exterior
2. Métodos para subclasses sobrecarregarem virtual abstrato;
público
1. Construa um método destruidor
2. Métodos para chamadas externas
3. Atributos para chamadas externas
publicado
1. Propriedades que aparecem no Object Inspector para uso de design
2. Um exemplo de resposta de evento que aparece no Object Inspector para tempo de design: TGIVersion = (gvUnknown, gv87a, gv89a);
TGIVersionRec = array[0..2] de char;
PInterfaceTable = ^TInterfaceTable;
TInterfaceTable = registro compactado
Contagem de Entrada: Inteiro;
Entradas: array[0..9999] de TInterfaceEntry;
{declaração forWord}
TGIFImagem = classe;
TGIFSubImage = classe;
{--------------------------
Item TGIFI
--------------------------}
TGIFItem = classe(TPersistente)
privado
FGIFImage: TGIFImage;
.............
fim;
Tenha cuidado para não ter variáveis de objeto de classe padrão, declare-as no chamador!
var
-----------: -------;
-----------: -------;
exemplo:
GIFDelayExp: inteiro = 10; {Multiplicador de atraso em mS.}
GIFDelayExp: inteiro = 12;
tema
-------------------------------------------------- --------}
{Objetivo do método}
procedimento ----------------------------
começar
--------;
--------;
fim;
{Objetivo do método}
função--------------------------------
começar
--------;
--------;
fim;
Retorno de formato