Red de conocimiento informático - Conocimiento sistemático - Reglas para escribir código fuente

Reglas para escribir código fuente

Especificaciones de escritura del formato del código fuente de Delphi Al aprender cualquier idioma, debe prestar atención a las especificaciones de escritura del formato del código fuente de Delphi 1. Introducción a la especificación

Las principales disposiciones de esta especificación Las reglas y precauciones que se deben seguir al escribir programas fuente de Delphi. El propósito de escribir esta especificación es hacer consistentes los hábitos de escritura del código fuente de los desarrolladores de software de la empresa. Esto permite que cada miembro del equipo comprenda el código de otros miembros del equipo, lo que facilita el mantenimiento del sistema de memoria de desarrollo secundario del código fuente.

2. Especificaciones generales de formato

2.1 Sangría

La sangría son los dos caracteres expuestos para aumentar la legibilidad cuando cambia el nivel del espacio del programa fuente. La regla de sangría es de dos espacios por nivel. No se permite la tabulación. Porque Tab producirá diferentes efectos debido a las diferentes configuraciones realizadas por el usuario. Cuando encuentre un juicio de inicio o entrada, bucle, manejo de excepciones, con declaración, declaración de tipo de registro, declaración de clase, etc., aumente un nivel. Cuando encuentre un juicio de fin o salida, bucle, manejo de excepciones, con declaración, declaración de tipo de registro, la clase. La declaración se reduce en un nivel durante la espera. Por ejemplo:

if TmpInt lt;gt; 100 entonces

TmpInt := 100

2.2 Inicio..Fin

comenzar; declaración Las declaraciones y end deben ocupar una línea en el programa fuente, por ejemplo:

for I:= 0 a 10 do start //Uso incorrecto

end

para I:= 0 a 10 hacer //Uso correcto

comenzar

finalizar

2.3 espacios

en operador; Y agregue espacios en ambos extremos de los símbolos de juicio lógico, por ejemplo: I: = I 1;, ayb, etc., pero no se requieren espacios al agregar paréntesis. Por ejemplo: if (a gt; b) then //Uso incorrecto

If (a gt; b) then //Uso correcto

Otro ejemplo: procedimiento Test(Param1: integer ; Param3: string);

3. Especificación del formato de escritura de sintaxis de Object Pascal

3.1 Palabras reservadas

Todas las palabras reservadas o palabras clave del lenguaje Object Pascal deben ser Utilice letras minúsculas.

3.2 Procedimientos y funciones

3.2.1 Denominación y formato

Todos los nombres de los procedimientos y funciones deben utilizar palabras significativas, y los nombres de todas las palabras deben be Una letra debe estar en mayúsculas.

Por ejemplo:

procedimiento formatharddisk; //Nombre incorrecto

procedimiento FormatHardDisk; //Nombre correcto

Se deben utilizar procedimientos y funciones que establezcan contenido variable Establecer como un prefijo, por ejemplo:

procedimiento SetUserName

Los procedimientos y funciones que leen contenidos variables deben usar Get como prefijo, por ejemplo:

función GetUserName: string;

3.2.2 Parámetros de procedimientos y funciones

3.2.2.1 Nombramiento

Los parámetros de tipo uniforme se escriben en la misma oración:

procedure Foo(Param1, Param2, Param3: Integer; Param4: string);

3.2.2.2 Nomenclatura

Todos los parámetros deben ser significativos y cuando los nombres de los parámetros son diferentes de otros; Cuando se repite el nombre del atributo, agregue un prefijo 'A', por ejemplo:

procedure SomeProc(AUserName: string; AUserAge: integer

3.2.2.3 Conflicto de nombres

3.2.2.3 Conflicto de nombres

p >

Cuando dos unidades utilizadas incluyen una función o procedimiento con el mismo nombre, cuando haga referencia a esta función o procedimiento, se ejecutará la función o procedimiento en la unidad declarada más adelante en la cláusula de uso. Para evitar esta 'dependencia de cláusulas de uso', debe escribir la fuente completa de la función o procedimiento al hacer referencia a ella. Por ejemplo:

SysUtils.FindClose(SR);

Windows.FindClose(Handle);

3.3 Variables

3.3.1. Denominación y formato de variables

En primer lugar, todas las variables deben tener nombres significativos para que otros miembros del equipo puedan comprender fácilmente el significado de las variables. La denominación de variables puede utilizar nombres sinónimos en inglés y se pueden utilizar varios nombres en inglés. . palabras, pero la primera letra de cada palabra debe estar en mayúscula. Por ejemplo:

var

WriteFormat::string;

Al mismo tiempo, se pueden utilizar ciertas abreviaturas para algunos tipos específicos, como se muestra a continuación:

Tipo de puntero

Tipo de registro P

Tipo de matriz Rec

Clase Arr

Las variables de control de bucle de clase generalmente usan un solo carácter como: i, j o ​​k. También se permite utilizar un nombre significativo como UserIndex.

3.3.2 Variables locales

El uso de variables locales en un procedimiento sigue las reglas de nomenclatura para todas las demás variables.

3.3.3 Variables globales

Intenta no utilizar variables globales. Si debes utilizar variables globales, debes agregar el prefijo 'g' y el tipo de variable debe ser. reflejado en el nombre de la variable. Por ejemplo:

gprecUserCount: point; //La variable global denominada UserCount es de tipo puntero a una estructura

Pero las variables globales se pueden usar dentro del módulo. Todas las variables globales dentro del módulo deben tener el prefijo 'F'. Si es necesario intercambiar datos entre varios módulos, esto debe lograrse declarando atributos.

Por ejemplo:

tipo

TFormOverdraftReturn = class(TForm)

privado

{ Declaraciones privadas }

FuserName: cadena;

FuserCount: entero;

Procedimiento SetUserName(Valor: cadena);

Función GetUserName: cadena

público;

{ Declaraciones públicas }

propiedad UserName: cadena lee GetUserName escribe SetUserName

propiedad UserCount: entero lee FuserCount escribe FuserCount

end ;

3.4 Tipo

3.4.1 Acuerdo de mayúsculas y minúsculas

Los nombres de tipo de palabras reservadas deben estar todos en minúsculas. Los tipos de API de Win32 suelen estar en mayúsculas. Para otros tipos, la primera letra está en mayúscula y las letras restantes en minúsculas, por ejemplo:

var

MyString: // palabra reservada;

WindowHandle: HWND; // Tipo de API Win32

I: Integer; // identificador de tipo introducido en la unidad del sistema

3.4.2 Tipo de punto flotante

Intente no utilizar el tipo Real. Es sólo por compatibilidad con el antiguo código Pascal. Intente utilizar el tipo Doble. El tipo Double está optimizado para procesadores y buses de datos y es una estructura de datos estándar definida por IEEE. Cuando el valor excede el rango de Doble, use Extendido. Pero Java no admite Extended. Sin embargo, el tipo Single se puede utilizar cuando se utilizan archivos DLL escritos en otros idiomas.

3.4.3 Tipo de enumeración

El nombre del tipo de enumeración debe ser significativo y el nombre del tipo debe tener el prefijo 'T'. El nombre del contenido del tipo de enumeración debe contener la abreviatura del nombre del tipo de enumeración, por ejemplo:

TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB

<); p>3.4.4 Tipos de matriz

El nombre del tipo de matriz debe ser significativo y el nombre del tipo debe tener el prefijo 'T'. Si declara un puntero a un tipo de matriz, debe anteponer el prefijo 'P' antes del nombre del tipo, por ejemplo:

tipo

PCcycleArray = ^TCycleArray

;

TCycleArray = array[1..100] of integer;

3.4.5 Tipo de registro

El nombre del tipo de registro debe ser significativo y el nombre del tipo debe tener el prefijo 'T'.

Si declara un puntero a un tipo de matriz, debe prefijar 'P' antes del nombre del tipo, por ejemplo:

tipo

PEmployee = ^TEmployee

;

TEmployee = registro

Nombre del empleado: cadena

Tarifa de empleado: Doble

fin

Clase 3.5

3.5 .1 Nomenclatura y formato

El nombre de la clase debe ser significativo y el nombre del tipo debe tener el prefijo 'T'. Por ejemplo:

tipo

TCliente = clase(TObject)

El nombre de una instancia de clase suele ser el nombre de la clase sin la 'T' . Por ejemplo:

var

Cliente: TCliente;

3.5.2 Variables en clases

3.5.2.1 Nomenclatura y formato

p> p>

Los nombres de las clases deben ser significativos y los nombres de los tipos deben tener el prefijo 'F'. Todas las variables deben ser de cuatro dimensiones. Si necesita acceder a esta variable desde el exterior, debe declarar un atributo

3.5.3 Método

3.5.3.1 Nombramiento y formato

Igual que la denominación y formato de funciones y procedimientos Formato.

3.5.3.2 Métodos de acceso a la propiedad

Todos los métodos de acceso a la propiedad deben aparecer en privado o protegido. La denominación de los métodos de acceso a atributos es la misma que la de las funciones y procedimientos. Además, el método de lectura debe usar el prefijo 'Get'. El método de escritura debe usar el prefijo 'Set'. El parámetro del método de escritura debe denominarse 'Valor' y su tipo debe ser coherente con la propiedad que se va a escribir. Por ejemplo:

TSomeClass = class(TObject)

privado

FSomeField: Entero

protegido

función GetSomeField: Entero;

procedimiento SetSomeField( Valor: Entero);

propiedad pública

Entero: leer GetSomeField escribir SetSomeField; > end;

3.6 Atributos

3.6.1 Nombramiento y formato

Consistente con el nombre de la variable de la clase con el prefijo 'F' es decir utilizado para la operación.

3.7 Archivos

3.7.1 Archivos de proyecto

3.7.1.1 Estructura del directorio del proyecto

Directorio principal del programa - Bin (Aplicación

-Db (la ruta a la base de datos local)

-Doc (la ruta al documento)

-Hlp (la ruta al archivo de ayuda)

-Backup (ruta de respaldo)

-Tmp (ruta de archivo temporal)

3.7.1.2 Nomenclatura

El archivo del proyecto debe usar un nombre significativo. Por ejemplo: el archivo del proyecto de información del sistema en Delphi se llama SysInfo.dpr.

3.7.2 Archivo de formulario

3.7.2.1 Nombramiento

Consistente con el nombre del formulario: Por ejemplo: si el nombre del formulario es FormMain, entonces el nombre del archivo de formulario será FormMain.frm.

3.7.3 Archivo del módulo de datos

3.7.3.1 Nomenclatura

El nombre del archivo del módulo de datos debe ser significativo y utilizar 'DM' como prefijo. Por ejemplo: el módulo de datos del usuario se denomina 'DMCustomers.dfm'.

3.7.4 Archivo del módulo de datos remoto

3.7.4.1 Denominación

El nombre del archivo del módulo de datos remoto debe ser significativo y utilizar 'RDM' como nombre. prefijo. Por ejemplo: el módulo de datos remoto del usuario se denomina 'RDMCustomers.dfm'.

3.7.5 Archivo de unidad

3.7.5.1 Unidad común

3.7.5.1.1 Nomenclatura de archivo de unidad

Nombre de archivo de unidad Debería tiene sentido y utiliza 'unidad' como prefijo. Por ejemplo: una unidad general se denomina 'UnidadGeneral'.

3.7.5.2 Unidades de formulario

3.7.5.2.1 Nombramiento

El nombre del archivo de la unidad de formulario debe ser coherente con el nombre del formulario. Por ejemplo: si el formulario principal se llama FormMain.pas, entonces el nombre del archivo de la Unidad de formulario es: UnitFormMain.

3.7.5.3 Unidades del módulo de datos

3.7.5.3.1 Nombramiento

El nombre del archivo de la unidad del módulo de datos debe ser coherente con el nombre del módulo de datos. Módulo. Por ejemplo: si el módulo de datos principal se llama DMMain.pas, entonces el nombre del archivo de la unidad del módulo de datos es: UnitDMMain.

3.7.5.4 Encabezado del archivo

El propósito, autor, fecha, entrada y salida del archivo debe escribirse en el encabezado de todos los archivos. Por ejemplo:

{

Fecha de modificación:

Autor:

Propósito:

La estructura de este módulo consta de:

}

3.7.6 Formularios y módulos de datos Formularios

3.7.6.1 Clase de formulario

1 Estándar de nomenclatura de clases de formulario.

p>

Las clases de formularios deben tener nombres significativos y usar 'TForm' como prefijo. Por ejemplo: El nombre de la clase Acerca del formulario es:

TAboutForm = class(TForm)

El nombre del formulario principal es

TMainForm = class( TForm)

p>

2. Estándares de nomenclatura para instancias de clase Form

El nombre de la instancia de clase Form debe ser coherente con el nombre de la clase Form con la 'T. ' abandonó.

Por ejemplo:

Nombre de tipo

Nombre de instancia TaboutForm

AboutForm TmainForm

MainForm TCustomerEntryForm

CustomerEntryForm

CustomerEntryForm

p >

3.7.6.2 Formulario de módulos de datos

3.7.6.2.1 Estándares de denominación de formularios de módulos de datos

La denominación de las clases de formularios de módulos de datos debe ser significativa y utilizar 'TDM'. ' como prefijo. Por ejemplo:

TDMCustomer = class(TDataModule)

TDMOrders = class(TDataModule)

3.7.6.2.2 Estándar de nomenclatura de instancias del módulo de datos

El nombre de la instancia de la clase Formulario del módulo de datos debe ser coherente con el nombre de la clase Formulario del módulo de datos sin la 'T'. Por ejemplo:

Nombre de tipo

Nombre de instancia TCustomerDataModule

CustomerDataModule TordersDataModule

Control OrdersDataModule 3.8

3.8. 1 Denominación de instancias de control

Las instancias de control deben tener como prefijo el nombre de la clase de control menos la 'T', por ejemplo:

El nombre de Tedit donde se ingresa el nombre de usuario es: Editar nombre de usuario.

3.8.2 Abreviaturas de controles

Las siguientes abreviaturas se pueden usar para los nombres de los controles, pero las abreviaturas utilizadas se agregan con '_' entre los nombres de los controles:

3.8 .2.1 Pestaña Estándar

mm TMainMenu

pm TPopupMenu

mmi TMainMenuItem

pmi TPopupMenuItem

lbl TLabel

edt TEdit

mem TMemo

btn TButton

cb TCheckBox

rb TRadioButton

lb TListBox

cb TComboBox

scb TScrollBar

gb TGroupBox

rg TRadioGroup

pnl TPanel

p>

cl TCommandList

3.8.2.2 Pestaña Adicional

bbtn TBitBtn

sb TSpeedButton

me TMaskEdit

sg TStringGrid

dg TDrawGrid

img TImage

shp TShape

bvl TBevel

sbx TScrollBox

clb TCheckListbox

spl TSplitter

stx TStaticText

cht TChart

3.8.2.3 Pestaña Win32

p>

tbc TTabControl

pgc TPageControl

il TImageList

re TRichEdit

tbr TTrackBar

prb TProgressBar

ud TUpDown

hk THotKey

ani TAnimate

dtp TDateTimePicker

tv TTreeView

lv TListView

hdr THeaderControl

stb TStatusBar

tlb TToolBar

clb TCoolBar

3.8 .2.4 Pestaña Sistema

tm TTimer

pb TPaintBox

mp TMediaPlayer

olec TOleContainer

ddcc TDDEClientConv

ddci TDDEClientItem

ddsc TDDEServerConv

ddsi TDDEServerItem

3.8.2.5 Pestaña Internet

csk TClientSocket

ssk TServerSock

et

wbd TWebDispatcher

pp TPageProducer

tp TQueryTableProducer

dstp TDataSetTableProducer

nmdt TNMDayTime

nec TNMEcho

nf TNMFinger

nftp TNMFtp

n TDCOMConnection

olee TOleEnterpriseConnection

sck TSocketConnection

rms TRemoteServer

mid TmidasConnection

4. Especificaciones de modificación

Las disposiciones de esta regla sólo se aplican a los programas que han sido incluidos en la gestión de configuración. En este tipo de modificación se requiere conservar el contenido anterior a la modificación e identificar el contenido modificado y nuevo. Y agregue la información necesaria, como el modificador, la fecha de modificación, la descripción de la modificación, etc., al encabezado del archivo.

4.1 Historial de modificaciones

Al realizar modificaciones aprobadas en el archivo fuente, el modificador debe agregar un elemento del historial de modificaciones al encabezado del archivo de programa. Para cada modificación posterior, el modificador debe completar la siguiente información en el proyecto:

Modificador

Tiempo de modificación

Motivo de la modificación

Las instrucciones de modificación son cómo modificar

4.2 Nuevas líneas de código

Debe haber líneas de comentarios antes y después de las nuevas líneas de código.

//Modificador, hora de modificación, descripción de la modificación

Nueva línea de código

//Modificación completada

4.3 Eliminar líneas de código

Eliminar líneas de código con líneas de comentarios antes y después.

//Modificador, hora de modificación, descripción de la modificación

//Línea de código que se eliminará (comenta la declaración que se eliminará)

//Fin de modificación

4.4 Modificar la línea de código

Modifique la línea de código eliminando la línea de código y luego agregando la línea de código.

//Modificador, hora de modificación, descripción de la modificación

//Línea de código antes de la modificación

//Fin de la modificación

/ /Línea de código modificada

Línea de código modificada

//Fin de la modificación