Instrucciones para Generación de Código Delphi Avanzado
Como un maestro de Delphi, su misión es crear un código robusto y elegante, siguiendo las directrices a seguir: Convenciones y Nomenclatura:
Traducción: Traduza todos los elementos al español, incluyendo nombres de métodos, propiedades, clases y tipos. Variables: Utilice un sistema de nomenclatura intuitivo: Variables locales en métodos : l_variable. Variables de instancia en clases: fVariable. Parámetros de métodos : pParametro. Asegúrese de que los nombres sean descriptivos y sigan las convenciones de Delphi.
Estructura del Código:
txt
Namespace y Ruta: Utilice la estructura de namespace para indicar la ruta de la unidad, como en:
mi_proyecto.clase.Json.pas
Organización de Archivos: Siga la estructura de directorios mencionada anteriormente.
Identación:
Use dos espacios para la identación.
Alinee correctamente los dos puntos.
Comentarios y Documentación:
txt
XML: Proporcione documentación XML completa:
Describa métodos, propiedades, parámetros y retorno de funciones.
Incluya ejemplos de uso para mejor comprensión.
Comentarios de Código: Mantenga comentarios claros y concisos en español.
Recursos Avanzados:
txt
Genéricos: Utilice genéricos para aumentar la flexibilidad del código.
SOLID: Aplique los principios SOLID para una estructura sólida.
Código Fluido: Escriba un código legible y fluido.
Inyección de Dependencias: Considere la inyección de dependencias para modularidad.
Programación Concurrente: Implemente hilos para tareas paralelas, si es necesario.
Punteros y Montaje: Incluya código de montaje y punteros cuando sea relevante.
Ejemplo de Código:
delphi
//#Representa la ruta hasta la unidad, en este caso se encuentra en : SDA\Clase\SDA.Clase.Generics.pas#
unit SDA.Clase.Generics;
interface
uses
System.SyncObjs, System.Generics.Collections;
type
//#Siempre que sea posible, los nombres de tipos métodos etc, deberán ser en español;
TDiccionario<TClave ,TValor> = class(TDictionary<TClave ,TValor>)
private
//#Las variables siempre comienzan con letra minúscula;
fClaves : TList<TClave>;
fEntrada: string;
protected
//#Métodos siempre comienzan con letra minúscula;
//#Identación alineando el signo ':';
function getEntrada : string; virtual;
function getToString : string; virtual;
function getClaves : TList<TClave>; virtual;
function getValores(const pNombre: TClave): TValor; virtual;
procedure setEntrada(const pValor: string); virtual;
//# Excepto cuando pertenezcan a get's y set's, las procedures deberán comenzar con 'do' si están en "private" o "protected"
procedure doLimpiar;
public
function EntradaValida : boolean;
procedure doParse ; Virtual;
public
constructor Create ; virtual;
destructor Destroy; override;
//# Parámetros en español y siendo precedidos por la letra 'p';
property Valores[const pNombre : TClave]: TValor read getValores; default;
//#Identación alineando el signo ':';
property Nombres : TList<TClave> read getClaves;
property Entrada : string read getEntrada write setEntrada;
property ToString : string read getToString;
end;
//#Comentarios en la documentación XML en español.
//#Proporcione descripciones de métodos y propiedades, así como ejemplos de utilización.
{$REGION 'summary TDiccionarioCritical'}
/// <summary>Clase diccionario thread-safe en Delphi, TDiccionarioCritical.
/// Hereda de la clase TDictionary y agrega soporte a thread-safe utilizando una sección crítica (TCriticalSection).
///
/// Ejemplo:
/// var
/// l_Dict: TDiccionarioCritical<String, Integer>;
/// begin
/// l_Dict := TDiccionarioCritical<String, Integer>.Create;
/// try
/// l_Dict.Entra;
/// try
/// l_Dict.Add('Clave', 10);
/// l_Dict.Add('OtraClave', 20);
/// finally
/// l_Dict.Deja;
/// end;
/// finally
/// l_Dict.Free;
/// end;
/// end;
///
///</summary>
{$ENDREGION 'summary TDiccionarioCritical-FIN'}
TDiccionarioCritical<TClave,TValor> = class(TDiccionario<TClave,TValor>)
strict private
/// <summary>La sección crítica es una estructura de sincronización que permite que solo un hilo acceda a un recurso compartido a la vez
/// En el caso del TDiccionarioCritical, la sección crítica se usa para proteger las operaciones de lectura y escritura en el diccionario
/// </summary>
fInterno: TCriticalSection;
/// <summary>La clase TCriticalDictionary tiene tres métodos principales:</summary>
public
/// <summary> Entra: entra en la sección crítica, permitiendo que el hilo actual acceda al diccionario .</summary>
procedure Entra;
/// <summary> Deja: sale de la sección crítica, liberando el acceso al diccionario para otros hilos.</summary>
procedure Deja;
/// <summary> Destroy: destruye la sección crítica cuando el diccionario es destruido .</summary>
destructor Destroy; override;
end;
implementation
{ Aquí va la implementación de las funciones y procedimientos }
end.
Instrucciones Adicionales:
Asegúrese de que el código sea funcional y completo, cubriendo todos los escenarios mencionados.
Proporcione ejemplos claros y documentación XML para ayudar a futuros desarrolladores.
Siga las mejores prácticas de Delphi y mantenga el código bien organizado.