![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
¿Cuál sería la relación Modularidad/Complejidad que se estaría dispuesto a tolerar?
Cita:
He notado como estas funciones y muchas otras... hacen llamadas tras llamadas... y más llamadas... Veamos: A -> B -> C -> D ->.... Si bien ya se ha respondido a la duda de JM75... y se he encontrado al culpable (IsLeapYear). Mi duda va por una cuestión de diseño: ¿Hasta que nivel estarían disupesto a declarar unidades y funciones para "simplificar la vida"? La VCL está llena de ejemplos de estos tipos... me parece bárbaro que haya cantidad y variedad de funciones para hacer más fácil la vida de un programador. Pero me abruma un poco la cantidad de volteretas que se puede armar... en especial cuando uno se inicia, porque empieza a declarar funciones a lo loco y después descubre que si existían... a mi me sigue pasando... ¿Cuál sería la relación Modularidad/Complejidad que se estaría dispuesto a tolerar? No se si se hacen estas preguntas o el loco soy yo... A ver que opinan, escucho opiniones, sugerencias... Saludos, |
#2
|
||||
|
||||
Bueno, yo en esta cuestión soy bastante "básico"; Si ya se ha "inventado la rueda" y la fuente del invento es fiable, no hay porqué reinventarla.
Considero el código de Borland como muy fiable; Puede ser que haya alguna función que no esté optimizada al máximo, pero seguro que el 98% del código puede ser tan fiable y eficiente que el que pueda hacer yo. La experiencia me dice que los "cuellos" de botella de una aplicación (al menos por las que yo me muevo) no "suelen" estar en una función como IsLeapYear (por muy ineficiente que sea), sino en sitios muy diferentes (índices, consultas, listas, busquedas, repintados,...). Así que salvo que sea necesario no suelo "pelearme" a este nivel. Sí lo he hecho alguna vez (la última con la unit SysUtils y el procedimiento InitializePackage), pero como digo es algo muy excepcional. Creo que la Modularidad a la larga añade complejidad (en el sentido de llamadas como las que comenta Seoane), pero aporta otras cosas. Es la discusión de siempre; Lo más eficiente: Programar en ENSAMBLADOR. ![]() ![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#3
|
||||
|
||||
Yo es que no entiendo esta pregunta. Me parece que se están mezclando dos cosas: modularización y reuso.
En el caso del año bisiesto el problema es que se crea una modularización innecesaria debido el reuso incorrecto de funciones. Y bueno, aunque no se trata de abusar, creo que a hoy en día, unos cuantos elementos más en el stack no presupondrán un grave problema, sobre todo si lo comparamos con la claridad que puede ganarse al modularizar una rutina. Creo que mientras la modularización no devenga en pulverización, no hay problema. // Saludos |
#4
|
|||
|
|||
Yo también no estoy del todo convencido con este debate y por una simple razón.
Todo depende del tiempo y de las circunstancias, (siempre me ha gustado esta frase ![]() Para esto también hay niveles de conceptualización muy personal. Sin embargo, si puedo decir que lo mejor es lo que dijo Neftali, no tratar de inventar la rueda pero agrego que si podemos intentar mejorarla. Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
#5
|
||||
|
||||
![]() ¡Hola a todos!
Soy partidario de la atomización del código, es decir, de dividir rutinas en sus fragmentos funcionales más elementales. Esto maximiza el aprovechamiento del código (reutilización), además de permitir un mantenimiento menos invasivo, más preciso y menos riesgoso (no es lo mismo tomar una simple llave de 3/8 y apretar con ella una tuerca perfectamente accesible e identificada, que ponerse un traje de buzo para bajar a donde está el submarino nuclear, buscar la tuerca floja de su casco, abrir la caja de herramientas...). Con ciertos lenguajes y compiladores, atomizar el código supone limitaciones importantes. Por ejemplo, algunas versiones de FoxPro no soportan más de cinco niveles de llamadas (una verdadera vacilada). Herramientas como Delphi están más preparadas para eficientar el código y con la nueva característica In-line de las versiones más recientes del compilador, la atomización ya no supone un mayor consumo de recursos en el ejecutable (de por sí, dicho consumo extra casi nunca resultaba significativo). Considero que en el futuro el estilo de la programación atómica estará altamente difundido y será común encontrar normativas de desarrollo que inviten al programador a no escribir funciones de más de 15 o 20 líneas. Llegará un momento donde las bibliotecas de rutinas y componentes estén tan atomizadas que sus diversas partes podrán acoplarse sin mayores problemas para construir nuevos elementos de software, aún en otros lenguajes y para propósitos muy distintos, y habrá tanto y tan variado y flexible código reutilizable que cualquier rutina nueva que se quiera escribir tendrá gran riqueza de átomos de dónde echar mano. Se me ocurre que podríamos hacer un ejercicio a este respecto, pongamos aquí el código de una función Delphi con más de 20 líneas y atomicémosla explicando las ventajas del nuevo código resultante. Domingo, tú que eres aficionado a estos ejercicios, ¿tendrás alguna función así para compartir? ![]() Un abrazo optimizado. Al González. ![]() |
#6
|
||||
|
||||
Cita:
![]() ![]() ![]() Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#7
|
||||
|
||||
Cita:
![]() Por otro lado, ya que me meto, dejo mi opinion. Yo tenia un profesor que decia que si no puedes ver todas las lineas de una funcion sin usar el scroll es hora de partila en funciones mas pequeñas ![]() Yo personalmente cuando estoy desarrollando un algoritmo complicado encuentro muy útil usar funciones para dividirlo en problemas mas sencillos y poder resolver cada uno por separado. |
#8
|
||||
|
||||
Hola
Yo ni opino. Nada mas veo y aprendo. ![]() Si no digo algo no me llega por correo. ![]() Cuando los maestros se reunen hay que estar presente. ![]() Saludos |
#9
|
||||
|
||||
Estoy de acuerdo con seoane, el maestro de seoane y también con Al González; pero, como dije antes, no hay tampoco que caer en la pulverización del código y separar en una función cada simple paso de la función original.
// Saludos |
#10
|
||||
|
||||
Cita:
![]() Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#11
|
||||
|
||||
Cita:
A -> B -> C -> D ->.... ...y fue Delphius quien la comentó... ![]() (raise TIncorrectQuote.Create('Se equivoicó de persona') ![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#12
|
||||
|
||||
![]() ![]() Estoy de acuerdo con seoane y su profesor: Cita:
En conclusión ( ![]() Cita:
__________________
Cita:
|
#13
|
||||
|
||||
Cita:
Aun así, cuando programo en C suelo unir esas rutinas pequeñas en una única más grande que después optimizo, pero antes he escrito y comprobado el sistema "atomizado". |
#14
|
||||
|
||||
Cita:
![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#15
|
||||
|
||||
![]() Desde mi punto de vista la relacion tiene que estar directamente proporcional al asunto de costo/beneficio, si queremos hacer algo por lo que nos pagaran bien, tenemos tiempo, nos gusta o es muy importante entonces (yo), analizo 100 veces mas uno la mejor forma de realizar lo necesitado, pero como ya expuse en otros sitios, la forma mas optima a la que llegarás sera solo con assembler, luego de haber comprobado que el código realizado es mejor a los tres anteriores realizados por tamaño y velocidad.
En lo de la rueda, mientras sea yo quien cree la rueda tendre el control que quiera sobre los sistemas que utilicen mi producto... talvez en este momento estas usando algo con un backdoor, o talvez lo hizo un "tapado" y esta hecho al huevo pero funciona! La decision debe ser (como todas) la mejor que se adecue al caso particular! |
#16
|
||||
|
||||
Cita:
![]() No pude evitar recordar este comentario mientras veía el video... y bueno... ¿Porqué c... llego siempre tarde para las ideas? ![]() Hubiera sido lindo que toda esta charla hubiera sido hecha en el 2006 o el 2005... Podría tener una escusa para decirle a Borland/CodeGear: "Hey... la idea fue de Clubdelphi" ![]() Vine al hilo para sacarme la duda de la fecha en que fue tratado todo esto... pero como podran ver... fue posterior al lanzamiento... ![]() Como que se me subió el ego (Dije ego... no Egostar. Hay que aclarar hoy en dia)... sería maravilloso leer en su acerca de: "Idea Original: Delphius" ![]() ![]() ![]() Bueno resucité el hilo solo para esto. Son las 4:15 am en Argentina, quiere agarrarme el sueño. A ver... si esta vez me le adelanto, aunque sea en sueños ![]() Saludos, |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Programas que calculan la complejidad operacional | Delphius | Varios | 5 | 19-01-2007 10:34:34 |
cual seria el componente correcto? | DM2005 | Varios | 0 | 04-07-2006 21:55:39 |
Cual seria lo ideal? | Coco_jac | Gráficos | 1 | 10-06-2005 01:38:42 |
Cual seria el equivalente de AllTrim (clipper) | Alfredo | OOP | 2 | 04-03-2005 15:58:44 |
cual seria la mas adecuado base de datos... | ronimaxh | Firebird e Interbase | 8 | 23-04-2004 17:47:15 |
![]() |
|