Ir al contenido


Foto

Ahorro de Código


  • Por favor identifícate para responder
26 respuestas en este tema

#21 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 22 diciembre 2008 - 12:33

me alegra que este programando bien :D:D, con respecto al error grave solo sucede si no consigue cedula y si no entra en el else....

Por algo dije, que no sabía si había chequeado bien. Es que no estoy muy acostumbrado a esa identación de if-then-else que aplicas. Yo prefiero identar (¿es éste el término correcto? de esta forma:



delphi
  1. if (condicion)
  2.  then begin
  3.         end
  4.  else begin
  5.        end;


De este modo tanto la parte THEN como la parte ELSE están en la misma línea.

Como he dicho, el tema de partir o no el algoritmo eso ya es una cuestión de análisis. Lo primero es preguntarse: ¿esa mini rutina de comprobación sólo se da en dicho contexto (botón)? ¿O puede aparecer en otro lado (a lo largo del ciclo de vida del form? Si va a "dispararse" esa mini rutina (o alguna muy parecida) en varios puntos, es mejor tenerla fuera en un procedimiento o función. Si se considera oportuno tenerla como un método más, la nueva pregunta es ¿Sólo es válido para ésta clase? ¿Puede ser útil en otra?

También, si te gustan los números puedes llevar el uso de indicadores y métricas para ver como se comporta el añadir más métodos a una clase. MPC (Métodos ponderados por clase), ACO (Acomplamiento entre clases objeto), CCM (Carencia de cohesión en los métodos), TC (Tamaño de clase) son algunas de las que pueden aportar un valor de interés.

Por ejemplo, supongamos que tienes en dicho Form, ya un total de 20 métodos. Supongamos que separas a esa rutina en dos, y sólo te limitas a llamarlas en el botón. Añadir esos 2 métodos en dicho Form (suponiendo que sólo para dicho Form es válido contar con éstos) supone un incremento del 10% ( 2/20) en cuanto a cantidad de métodos, lo que nos lleva a un total de 22. A fin de comprobar las cuentas: 20/22 es aproximadamente 91%.
Si sólo se va a usar una vez (en el botón) podría indicar un desperdicio, pero si existe la posibilidad de que esas rutinas se apliquen en variso puntos, es conveniente.

Ahora si deseas, puedes "poderar" tus resultados según la complejidad de los métodos, que es lo que hace MPC.
Teniendo esas rutina como algo indivisible tenemos un valor de V(G) = 6 si mis cálculos son correctos. Normalizado respecto a la cantidad de líneas obtenemos 6/35 = 0,17 o un 17%.
Ahora si separamos la rutina de control de la de inserción tendemos esto: V(G1) = 5, V(G2) = 2. Normalizados son: 5/10 = 0,5 y 2/25 = 0,08. Lo que da un total de 0,58 o un 58%.

Por un lado vemos que si lo asumimos como cantidad es despreciable, pero si consideramos en conjunto su complejidad vemos un incremento de un 0,58 a la métrica MPC; lo cual parecería un tanto impráctico considerando que es un valor bastante algo respecto a ese 17%.
En definitiva se debe analizar otros factores, para tener otra perspectiva.
Yo me limito a ofrecer un plano un tanto más técnico y "numérico". Siempre en última instancia prima la astucia, la experiencia del desarrollador.

con respecto a los datamodules..... nunca he sabido como se usa pero yo uso todos los ztables en un solo form que creo que es casi lo mismo

No son lo mismo, el Form te consume más recursos que el TDataModule. Para usar los TDataModule basta con añadir en las sección uses de las units necesarias el nombre de la unidad del TDataModule.

Saludos,
  • 0

#22 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 22 diciembre 2008 - 04:28

Una idea.....

Yo de manera personal utilizo todos los "mensajes" en una unidad así puedo reutilizar los mensajes y si esta mal escrito solo debo de ir a esa unidad, corregirlo y compilar.

Me refiero:


delphi
  1. Unit UMensajes.
  2.  
  3. interface
  4.  
  5. resourcestring
  6.   StrMensaje = 'Mensaje';
  7.   StrMensaje1 = 'Mensaje1';
  8.  
  9. implementation
  10.  
  11. end.



Entonces en la unidad que necesitas desplegar el mensaje (pones en uso la unidad de mensajes) ya esa usando MessageBox, ShowMessage o MessageDlg haces:


delphi
  1. ShowMessage(StrMensaje);
  2. MessageDlg(StrMensaje1);



Entiendo que con esto ahorras unas que otras líneas.
  • 0

#23 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.409 mensajes
  • LocationRepública Dominicana

Escrito 22 diciembre 2008 - 04:32

Oye Rolphy, basandome en tu ejemplo, ¿puedo usar ese método cómo traductor?, o sea, si quiero que mi aplicativo tenga todo los captions, Text, etc.. en un idioma u otra (Inglés o Español).

Saludos.
  • 0

#24 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 22 diciembre 2008 - 04:46

Bueno, realmente no he ido más allá de lo que explique.

Pero la sentencia resourcestring es la que se debe de utilizar para marcar esos textos que quieres que sean traducidos ya sea por la herramienta del Delphi, componentes o cualquier programa traductor.

Extraído de la ayuda de Delphi:

Resource strings are stored as resources and linked into the executable or library so that they can be modified without recompiling the program. For more information, see Internationalization and localization and the topics that follow it.

Resource strings are declared like other true constants, except that the word const is replaced by resourcestring. The expression to the right of the = symbol must be a constant expression and must return a string value. For example,

resourcestring
  CreateError = 'Cannot create file %s';        {  for explanations of format specifiers, }
  OpenError = 'Cannot open file %s';            { see 'Format strings' in the online Help }
  LineTooLong = 'Line too long';
  ProductName = 'Borland Rocks';
  SomeResourceString = SomeTrueConstant;


Espero haberte ayudado y cualquier cosa comentala y veremos que hacemos.... ;)
  • 0

#25 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 22 diciembre 2008 - 04:47

Oye Rolphy, basandome en tu ejemplo, ¿puedo usar ese método cómo traductor?, o sea, si quiero que mi aplicativo tenga todo los captions, Text, etc.. en un idioma u otra (Inglés o Español).

Saludos.

No soy Rolphy Reyes pero creo que si. Recuerdo haber leído algo al respecto en La Cara Oculta de D4. No recuerdo como viene la "historia" pero tengo un vago recuerdo que se basa en unos archivos especiales en donde se guardan las "traducciones", luego al cargar el programa se puede hacer uso de éstos archivos y de esa forma quedan las traducciones en los resourcestring listo a ser usadas cuando se las necesitan.

Además, veo entre las opciones del menu del IDE algo como Lenguaje (Proyect -> Languajes -> Add) ¿Tendrá algo que ver esto?
Nunca lo probé.

Me fijo en unos minutos en la Cara Oculta a ver si estoy en lo cierto. Por el momento toma con pinzas lo que dije...

Saludos,
  • 0

#26 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 22 diciembre 2008 - 04:49


Oye Rolphy, basandome en tu ejemplo, ¿puedo usar ese método cómo traductor?, o sea, si quiero que mi aplicativo tenga todo los captions, Text, etc.. en un idioma u otra (Inglés o Español).

Saludos.

No soy Rolphy Reyes pero creo que si. Recuerdo haber leído algo al respecto en La Cara Oculta de D4. No recuerdo como viene la "historia" pero tengo un vago recuerdo que se basa en unos archivos especiales en donde se guardan las "traducciones", luego al cargar el programa se puede hacer uso de éstos archivos y de esa forma quedan las traducciones en los resourcestring listo a ser usadas cuando se las necesitan.

Además, veo entre las opciones del menu del IDE algo como Lenguaje (Proyect -> Languajes -> Add) ¿Tendrá algo que ver esto?
Nunca lo probé.

Me fijo en unos minutos en la Cara Oculta a ver si estoy en lo cierto. Por el momento toma con pinzas lo que dije...

Saludos,


Es justo lo que acababa de comentar..... :)

Por ahí anda la idea.
  • 0

#27 Delphius

Delphius

    Advanced Member

  • Moderador
  • PipPipPip
  • 6.295 mensajes
  • LocationArgentina

Escrito 22 diciembre 2008 - 06:12



Oye Rolphy, basandome en tu ejemplo, ¿puedo usar ese método cómo traductor?, o sea, si quiero que mi aplicativo tenga todo los captions, Text, etc.. en un idioma u otra (Inglés o Español).

Saludos.

No soy Rolphy Reyes pero creo que si. Recuerdo haber leído algo al respecto en La Cara Oculta de D4. No recuerdo como viene la "historia" pero tengo un vago recuerdo que se basa en unos archivos especiales en donde se guardan las "traducciones", luego al cargar el programa se puede hacer uso de éstos archivos y de esa forma quedan las traducciones en los resourcestring listo a ser usadas cuando se las necesitan.

Además, veo entre las opciones del menu del IDE algo como Lenguaje (Proyect -> Languajes -> Add) ¿Tendrá algo que ver esto?
Nunca lo probé.

Me fijo en unos minutos en la Cara Oculta a ver si estoy en lo cierto. Por el momento toma con pinzas lo que dije...

Saludos,


Es justo lo que acababa de comentar..... :)

Por ahí anda la idea.


Cuando publiqué mi comentario me di cuenta de que ya lo habías dicho.
En la página 749 de la Cara Oculta se habla sobre el tema.

Saludos,
  • 0