Especificación del formulario de creación de código Delphi El propósito de esta especificación: darle a su código una apariencia unificada y estándar, mejorar
Legibilidad, comprensibilidad, mantenibilidad.
Principio de esta especificación: el nombre refleja el significado, la forma refleja la estructura
1. Estilo de unidad
2. Estilo de cada distrito
3. Estilo de declaración
4. Reglas de nomenclatura
Referencia: guía de estilo oficial de Borland Object Pascal
Guía del programador de Delphi5 sobre estándares de codificación
{ }
{nombre del proyecto}
{ }
{Copyright (C) 2000,2001 Nombre de la empresa}
{ }
{*************************************************** ***** ******}
unidad Nombre de la unidad;
{*************************************************** ***** ******
proyecto:
Módulo:
describir:
Versión:
fecha:
autor:
renovar:
HACER:
************************************************** * *****}
interfaz
usos
----,----,----,----,----,----,----,----,----,----, ----,
----,----, ----,----,----,----;
constante
------------------;
------------------;
------------------;
tipo
------------------;
------------------;
------------------;
------------------;
------------------;
------------------;
var
------------------;
------------------;
------------------;
implementación
usos
----,----,----,----;
{$R*.RES}
{$R *.DFM}
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
fin.retorno
Comentarios de temas, descripción del propósito de los procedimientos de función, comentarios de declaraciones.
Líneas en blanco: bloques de derechos de autor, entre clases, entre métodos - (dos líneas) Bloques internos de métodos (una línea)
Espacio: utilizado para mejorar la claridad.
Sangría: dos espacios
----- = ----;
----- = ----;
----- = ----;
----- = ----;Extensión
Prefijo: tan solo C_---; hasta un prefijo por tema
constante
{ Tema 1 }
C_--- = ----; {significado}
C_--- = ----; {significado}
C_--- = ----; {significado}
C_--- = ----; {significado}
{ Tema 2 }
----- = ----;
----- = ----;
----- = ----;
----- = ----; cadena de recurso, colocada después del área de la variable
cadena de recursos
constante
S_--- = '----';
S_--- = '----';
S_--- = '----';
Ejemplo: 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: matriz [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 variante (wtypes.h) }
varVacío = $0000; { vt_empty }
varNull = $0001;
varSmallint = $0002;
GIFVersions: matriz[gv87a..gv89a] de TGIFVersionRec = ('87a', '89a');
T---- = ---------
Tipo de objeto-->Entidad que tiene estado y proporciona servicios
T---- = clase(----)
Privado
--------
--------
protegido
--------
--------
público
--------
--------
publicado
--------
--------
fin; ordenar alfabéticamentePrivado
1. Todos los datos se colocan en el área Privada, comenzando con F
2. Los punteros de método correspondientes a todos los atributos del evento se colocan en el área Privada, comenzando con F.
3. Los métodos de atributos Get y Set se colocan en el área Privada --> no están preparados para ser heredados.
4. El método para responder el mensaje se coloca en el área Privada.
protegido
1. Métodos y atributos llamados por subclases pero que el mundo exterior no puede llamar
2. Métodos para que las subclases sobrecarguen lo virtual;
público
1. Construya un método destructor
2. Métodos para llamadas externas
3. Atributos para llamadas externas
publicado
1. Propiedades que aparecen en el Inspector de objetos para uso en diseño
2. Un ejemplo de respuesta a un evento que aparece en el Inspector de objetos en tiempo de diseño: TGIFVersion = (gvUnknown, gv87a, gv89a);
TGIFVersionRec = matriz[0..2] de carácter;
PInterfaceTable = ^TInterfaceTable;
TInterfaceTable = registro empaquetado
Número de entradas: entero;
Entradas: matriz[0..9999] de TInterfaceEntry;
{para declaración de Word}
TGIFImage = clase;
TGIFSubImage = clase;
{--------------------------
TGIFArtículo
--------------------------}
TGIFItem = clase(TPersistente)
privado
Imagen FGIF: Imagen TGIF;
.............
fin;
Tenga cuidado de no tener variables de objeto de clase predeterminadas, ¡declarelas en la persona que llama!
var
-----------: -------;
-----------: -------;
ejemplo:
GIFDelayExp: entero = 10; {Multiplicador de retraso en mS.}
GIFDelayExp: entero = 12;
tema
-------------------------------------------------- --------}
{Propósito del método}
procedimiento ----------------------------
comenzar
--------;
--------;
fin;
{Propósito del método}
función-----------------------------
comenzar
--------;
--------;
fin;
Formatear retorno