En otras palabras, internamente, no tienes porque hacer "malabares" si usas los tipos de datos correctos. Unicamente haces conversiones en tus entradas/salidas del/al "exterior". Eso significa que ademas, "alinea" el uso de tus tipos con lo que te da el lenguage.
En concreto, Delphi tiene de planta y por terceros un MONTON de controles y librerias que felizmente te permiten usar DateTime como DateTimes, Monedas como monedas, horas como horas, sin pasar por conversiones manuales a texto.
Esto siginifica que piensa asi:
Problema: Tengo que usar fechas
Hay un tipo fecha en delphi y/o BD y/ lo que sea?
- Si, lo uso (y por lo tanto tiene que existir rutinas ya probadas para manipularlos)
- No, y hago mi tipo concreto que abstrae como hacerlo
Hay un CONTROL para fechas?
- Si, lo uso
- No, y hago mi tipo concreto que abstrae como hacerlo
En este instante veo una vble o campo que se supone es fecha. USA EL TIPO CORRECTO?
- Si, eres un buen programador, date una palmadita
- No, eres un buen programador, y por lo tanto cambia al tipo correcto
Ahora, si la fuente de entrada/salida no tiene ese tipo "nativo" (ej: Lees de un archivo de csv) entonces:
Conviertes TODOS los campos al tipo correcto JUNTO con la lectura
Código Delphi
[-]
convertir_desde(archivo:TCSV):TCuentas
y al final lo devuelves:
Código Delphi
[-]
convertir_hacia(cuentas: TCuentas): TCSV
eso solamente debe existir A LA ENTRADA/SALIDA del mundo exterior. En TODOS los demas lugares usas el tipo correcto!
----
Esto se extiende. Si estas facturando y tienes unos estados como "Borrador", "En Proceso", "Pagado", entonces lo correcto es crear un tipo:
Código Delphi
[-]
type
TFacturaEstado = (Borrador, Proceso, Pagado);
convertir_desde(texto:String): TFacturaEstado
convertir_hacia(estado: TFacturaEstado): String
Aunque no lo parezca, esto reduce un MONTON de codigo repetido (ej: Estar chequeando por todos lados si el "estado" esta vacio, o preocuparse si esta o no en mayusculas, etc. Con un tipo, todo eso desaparece). Junto con hacer test redundantes (sera que si guarda el estado que es?).
Y si hay un error en el parseo de datos, no tienes que ir a chequear en cientos de lugares. Solo hay 2 opciones: convertir_desde, convertir_hacia.