Cita:
|
No sé si esto resulta ofensivo o algo así, y me disculpo de antemano si así es.
|
No tiene porque ser ofensivo, no te preocupes, para eso se hacen los foros, para comentar, preguntar y dar cada quien sus opiniones...
Cita:
Me gustaría ver algunos ejemplos de "cómo hacer código genérico" puesto que estoy trabajando en un proyecto y se me ocurrió esa idea (nunca la había aplicado hasta ahora) y me gustaría comparar, y ver si puedo mejorar un poco el código que tengo.
Me pareció muy interesante eso del código genérico. Tal vez se puede hacer algo que realmente valga la pena de cara al programador, para ahorrarnos tiempo, trabajo, y dolores de cabeza depurando.
|
Lamentablemente no te puedo enviar el código que tengo hecho, porque es propiedad de la empresa para la cual trabajo, y por ende no se me esta permitida la divulgación de los fuentes, pero si te puedo platicar un poco de como es que esta hecho lo que tengo y con eso te das una idea...
Para empezar te comentaré que me considero un programador "holgado", osea no me gusta trabajar de mas cuando se puede uno evitar la fatiga, para esto del desarrollo entre menos haya tecleado para obtener el resultado final para mi mejor, por eso es que generalmente me ocupo mas en la parte del diseño de la aplicación que en estar tirando código.
En el tiempo que llevo en esto he visto muchas aplicaciones, unas programadas de manera excelsa y otras mucho mas modestas... por ejemplo he visto sistemas de gestión que funcionan y funcionan bien, pero en cuestión de diseño dejan mucho que desear, pues usan formas para los catálogos donde se repiten una y otra vez las mismas barras de herramientas(sin ser formas heredadas de una forma generica que tenga esa barra de herramientas), donde tienen que estar dandole "Copy/Paste" a las mismas rutinas en cada ventana, porqueal final algo les dice que tienen que comportarse de manera similar, pero su solución es copiar y pegar codigo y componentes de aqui para allá, lo cual trae como consecuencia que la aplicación crezca desmezuradamente, que sea dificil de darle mantenimiento a esa aplicación, y que cualquier observación o requerimiento nuevo haga que el desarrollador se de de topes en la cabeza antes de siquiera intentar hacer un cambio infimo para el cliente, pero que es un esfuerzo garrrafal para el desarrollador por como tiene estructurado el programa.
Cada sistema es un mundo en si y generalmente tiene sus propios requerimientos, pero tambien este que hice hoy va a tener mucho en comun con el que voy a hacer mañana y tambien tiene cosas que pude haber usado en el que hice ayer... la cuestión aqui es saber identificar que es lo que es comun, que es lo que siempre me tengo que chutar a chaleco... y si te pones a pensar son muchas cosas las que son comunmente recurridas... en todos los sistemas queremos generalmente que se puedan identificar los usuarios, que se le puedan asignar permisos individuales y de grupo... en fin va a depender mucho del estilo y necesidades de programación de cada quien determinar las opciones comunes en cada aplicación, en mi caso te puedo mencionar que me gusta que en la aplicación se pueda crear menus personalizados, implementar un escritorio virtual de accesos directos a opciones de la aplicación, poder ver a que y a donde estoy conectado, poder manejar permisos a nivel de catálogos o porque no a nivel de los mismos componentes de los catálogos, (esto ya a gusto y preferencia del cliente final, hay quisquillosos que quieren que fulano pueda entrar al catalogo y modificar lo que sea menos esto u aquello y luego cambian de opinión, etc), me gusta guardar el estado de la última configuración que se uso en cada reporte del programa.. y asi te puedo decir miles y miles de cosas, sobre la seguridad, presentación, prestaciones, manutencion del programa... y lo común es que estas cosas sean como te digo similares en 3 o 4 productos... y si puedo esto manejarlo como un nucleo del cual dependan mis aplicaciones, tendré la ventaja de que una mejora o cambio en el nucleo se verá reflejado automáticamente en la siguiente versión de todos mis productos.
Desde donde yo lo veo, trabajar de esta manera solo tiene ventajas, pues tienes un orden en tu trabajo, es mas sencillo documentar, se puede ser tan específico y tan general como tu lo decidas, y lo único que hay que hacer es trabajar ordenadamente y aplicar algunos conceptos que poca gente respeta y que son tan imprescindibles en la vida real, y estos son: los patrones de diseño.
Hay variada información sobre esto de los patrones en la red, aunque hay poca en Delphi, aqui te dejo una liga para que te enteres de que va este rollo:
http://delphi.about.com/od/oopindelphi/a/aa010201a.htm ahi se discuten algunos de los patrones, pero lamentablemente no todos, aunque información sobra en la red si la buscas.
Cuando estudias estas cosas y te das cuenta que la programación orientada a objetos no termina con la herencia sino que realmente ahi es donde empieza y que hay un buen de camino por recorrer al respecto, se te abren muchas puertas a nuevas ideas, y a nuevas perspectivas de atacar los problemas que se te van presentando.
A grandes razgos, y con un grado de abstracción muy alto te he descrito lo que tengo hecho y tambien a mi me gustaría saber que implementaciones hacen otros programadores de este foro, su forma de trabajar, las ideas que nos puedan aportar, su acuerdo o desacuerdo en los patrones de diseño, etc.
Saludos y espero que esto le sea de utilidad a alguien por aqui