Simplifica tu código Delphi…

marzo 30, 2010 en Código, Consejo, Delphi, Enlace interesante, Entrada Diario

Simplifica tu código, piensa en clases, abstrae y racionaliza, usa el sentido común, etc… son algunos de los lemas que hemos podido compartir durante muchos de los artículos anteriores, casi desde siempre, con mas o menos acierto. Valga la redundancia, casi diría que en realidad, es una preocupación cuasi universal que nos corroe, a medida que avanzamos y aprendemos y nos formamos. También de alguna forma, exteriorizamos esos pensamientos en muchos de los post que acabamos publicando.

Nuestro punto de parada hoy, es nuevamente el blog de Stefaan Lessage, y la parada es para compartir cuatro artículos que ha escrito durante el mes de marzo y que pienso que forman parte de esa idea general que siempre hemos intentado plasmar: pensar en clases y abstraer. Pienso que la lectura de las cuatro entradas de Stefaan es muy aconsejable  y si bien, puede resultarnos mas o menos incomodo que esté escrita en otro idioma (ese punto ya depende de cada uno), existe el suficiente código para que pueda entenderse el trasfondo y la enseñanza que aporta. Sobretodo, os la aconsejo si os estáis iniciando en el entorno y buscais patrones de razonamiento que os sirvan de referencia en vuestros desarrollos.

La serie se titula, como no, “Simplify your Delphi Code using some basic rules, OO techniques and some refactoring“. Mas o menos, “Simplifica tu codigo Delphi usando algunas reglas básicas, tecnicas orientadas a objetos y refactorización”.

Parte 1

En la primera parte de la serie, Stefaan Lessage presenta el problema o la cuestión. Es un capítulo introductorio y breve, en el que inicia su reflexión imaginando una necesidad que suele darse con frecuencia y que consiste en retomar código escrito años atrás para su revisión. Puede que nos toque enfrentarnos a código difícil de leer o entender y que requiera un nuevo enfoque para facilitar en un futuro su mantenimiento.

Al hilo de mostrarnos las ventajas, Stefaan se centra con un ejemplo que puede ser representativo de esa ganancia y que va a servir de eje sobre el que van a girar el resto de los artículos de la serie. Personalmente, creo que ha elegido un ejemplo que recoge una necesidad básica en cualquier aplicación: guardar y cargar datos de personalización. Y como imagináis, casi siempre van a estar implicados o bien archivos ini o el registro, ficheros xml, etc.

Parte 2

La segunda parte, una vez planteada esa introducción, se nos muestra algo de código. Código que podría representar a esas lineas que deberíamos revisar, bajo un nuevo enfoque al hilo de la programación orientada a objetos. Siguiendo con su ejemplo, muestra varios procedimientos que permitirían desde los eventos de creación y destrucción del formulario, cargar y guardar los valores de personalización. Lógicamente, junto con estas lineas de código se nos presentan las desventajas de estas decisiones y los problemas que pueden suponer en distintos escenarios.

Parte 3

Aquí ya entra Estefaan Lessage en el primer acercamiento a resolver el problema desde la perspectiva OOP. Para ello, crea una clase base que permita tratar distintos tipos de datos de forma unificada. Así pues, la clase TdvSetting realmente no hace nada mas que preparar el camino. De hecho, los metodos Get/Set se limitan unicamente a generar una excepción, puesto que ella no sabe realmente como debe responder a dichos métodos. Será sus descendientes los que sobrescriban los métodos adecuados al contexto de la aplicación, creando código especifico.

Parte 4

Y ya la parte cuarta, finaliza la serie. En este artículo se define la clase TdvStringSetting a modo de ejemplo, descendiente de TdvSetting, y se nos proponen nuevas clases descendientes (TdvInteggerSetting, TdvBooleanSetting, etc.) y una clase adicional TdvSettings, descendiente de TObjectList, al modo de contenedor. Fijaros en un detalle importante, esta lista de objetos, recibe como parámetros en su funciones y procedimientos la clase base, jugando de esa forma Steffaan Lessage con la herencia y el polimorfismo (si no recuerdo mal a este tipo de polimorfismo se denomina como Polimorfismo de subtipado o de inclusión).

Creo que vale la pena que perdáis unos minutos y reviséis el código ya que este tipo de razonamientos pueden aportar un valor añadido al código que escribimos. No es tan importante la cantidad de lineas que uno puede abarcar en una jornada frente a que éstas garanticen que pueda ser revisadas meses después al aire de un nuevo contexto o en respuesta de nuevos requerimientos. Calidad o cantidad… Siempre debemos “aspirar” a la calidad.

Comparto plenamente lo escrito por Stefaan en la introducción

Think before you start writing your first line of code…

Una verdad como un templo.

El futuro de Delphi parece más claro que nunca (Stefaan Lesage)

julio 1, 2009 en Artículos, ¿Sabías que...?, ¿Sabías que...? [Delphi], Consejo, Delphi, Entrada Diario, Noticias, Noticias Delphi

El futuro de Delphi parece más claro que nunca
Stefaan Lesage 23/06/2009
Traducción de su artículo en
http://www.devia.be/news/article/the-future-of-delphi-looks-brighter-than-ever-before/

Hace unas semanas, fui invitado a un encuentro cordial en Bruselas, con David Intersimone, más conocido como David I.  en la comunidad de Delphi. David nos iba a contar algo acerca del mapa de proyecto para Delphi.

Los ultimos 10 años, he estado desarrollando software usando Borland Delphi (más tarde en Codegear y ahora en Embarcadero) y esta era la oportunidad perfecta para sacar alguna información  de lo que aparece entre lineas.

Delphi para todo

El mensaje era muy claro, pero fue como una sorpresa para mi cuando David I. mencionó el objetivo principal: Delphi para todo.  Mas tarde, durante la sesión dijo: Delphi nativo para todo, mencionando MacOsX, Linux pero tambien dispositivos móviles. El incluso auguró la posibilidad de construir aplicaciones con Delphi para telefonía. (inclusive iPhone)

En ese momento, yo no supe que pensar acerca de eso, pero la posibilidad de desarrollar aplicaciones para dispositivos móviles sonaba bien … para ser honesto, sonaba como un sueño. Pero durante el curso del resto de presentaciones, yo advertí que ellos podrían hoy estar cercanos a cumplirlo.

image

Delphi Touch

Bien, ellos actualmente lo han llamado Delphi Natural Input para ser correcto. El fin es permitir a Delphi y a sus componentes de la VCL interactuar con diferentes formas de dispositivos de entrada, desde pantallas táctiles, tablas digitales, dispositivos sensores, gps, dispositivos de habla, Webcams,…

Todas esas características vendrán incluidas en una futura versión de la VCL de Delphi. Desde que trabajo sobre Mac, y estoy usando iPhone, tenía un buen conocimiento acerca de las posibilidades pero nunca pensé que fuera posible lograr algo así con Delphi. Bien, David I. nos enseñó una demo y me probó lo equivocado que estaba…

La demo era bastante sencilla, y no requería programación alguna. Todo lo que se tenía que hacer era añadir un nuevo componente GestureManager a la aplicación. El paso siguiente sería crear la “comunicación” o usar algunas de las ya predefinidas, disponibles en el GestureManager. La única cosa que se había hecho era añadir algo de código en el evento OnGestureEvent y ejecutar el código en el evento que lo activaría.

Para éstos que habían sido desarrollados en Delphi,  podrías actualmente compararlos al componente TActionList, en el cual se pueden añadir algunas acciones por defecto y permite que puedas añadir las propias también.

En este punto, empezaba a estar claro para mi que las posibilidades de crear aplicaciones para Dispositivos móviles usando Delphi ya no era un sueño. Aparentemente ellos ya habian ocupado bastante trabajo en ello y  se demostró que podía actualmente ser una realidad.

El mapa del proyecto Delphi (Delphi Roadmap)

Yo estaba contento de ver que el equipo de Delphi, estaba ocupado trabajando en la próxima salida de Delphi. Aparentemente los desarrolladores habían sido divididos en grupos de equipos trabajando unos pocos proyectos a reparar. Voy a dar una apunte de esos proyectos y sobre lo que ellos  enfocarán.  No me preguntes sobre fechas de salida, ya que ellos no mencionaron ninguna. Como David prudentemente dijo:  Hay 75 o más caminos de preguntarnos cuando estará preparado y solo hay una respuesta correcta: “Cuando esté preparado”.

Proyecto Weaver

El proyecto Weaver sera el principal foco de las grandes y pequeñas mejoras del IDE, que aumentarán la usabilidad y la productividad.
Con soporte añadido para dispositivos de entrada naturales como táctiles y de expresión,..
Mejorar la documentacion y aumentar la productividad de equipo.
DatanSnap con soporte http en el servidor REST, y .Net proxies para DataSnap.
IDE Insight ™ (teclado con acceso a todo)
Soporte del API de windows 7 y direct 2D
Soporte de  RTTI mejorado.
Control de código fuente con una nueva interface Open Tools Api que provee soporte para Gestor de Control de codigo fuentte ( Weaver tendrá alguna implementacion de Subversion)
.Net Aspect Oriented Programing -Programacion .Net orientada a Aspectos- (esto me pareció completamente impresionante)

Proyecto Delphi X

Plataforma cruzada Windows, Linux y MacOs.
Algunas otras caracteristicas a considerar:
Libreria de componentes compatible.
DataSnapX con la caracteristica de crear tanto el servidor como el cliente tanto en las tres plataformas y en la web.

Proyecto Chromium

La principal caracteristica de Chromium será la calidad, calidad y calidad.
La atención se pone sobre la productividad del desarrollador (mejoarar la usabilidad, eliminar las tareas largas detenidas, cerrar los bugs tan pronto como sea posible, fijando un nuevo estandar de reusabilidad.
Lightweig O/R mapping  -Mapeado ligero (Object/Relational)-
Documentacion  OTA (Open Tools Api)
Un nuevo modelo de mapeado de datos (DataBinding model)
Mayor integración con las herramienta de bases de datos.

Proyecto Commodore

Permitirá desarrollo de 64 bits nativo para delphi y c++ builder.
Algunas caracteristicas a considerar:
Compilador completo, con soporte RTL y VCL para compilación nativa de 64 bits.
Aplicaciones Multi-Core/Multi-Thread
Soporte para desarrollo paralelo en la RTL.

Y mucho mas por venir

Parece que hay mucho mas por venir y algunos proyectos podrían venir a la vez. Tristemente, no nos han dado información sobre cuando un producto estaría disponible al publico. La unica cosa que David I. mencionó que el plan era dar una nueva versión de delphi cada año.

TMS SMOOTH CONTROLS.

Aquí en Belgica contamos con pocos desarrolladores de Delphi y nosotros tambien tenemos compañias como TMSSoftware quienes estan desarrollando buenos componentes. Habían algunas personas de TMSSoftware en la sala y ellos nos dieron una pequeña demo del paquete TMS Smooth Control pack,  el cual es un conjunto rico en caracteristicas, de controles de sofisticada apariencia y animación.

Los controles relamente eran impresionantes e inmediatamente me dieron la impresión que se tendría cuando se usa una aplicación de iPhone. Los componente parence lilmpios, bonitos y con muchas animaciones.

Algunos de nosotros, que hemos estado usando iPhone conocemos lo que estoy comentando. Cuando navegamos desde una pagina a otra en la ventana de una aplicación iPhone tu tienes una buena animación en lugar de un simple repintado de la ventana. Bien, los Smooth Controls hicieron exactamente lo mismo sobre Windows. Esto nos dio la misma vista y presentación.

CONCLUSION

Me perdí la primera parte del dia debido al trafico pero llegue a tiempo para la parte del mapa de proyecto de Delphi y debo decir que me parecia impresionante. Han habido días cuando nosotros no sabiamos que esperar de Delphi y alguna gente pensó incluso que los viejos días se acabaron para Delphi. Para algunos de vosotros que todavíadudais acerca del futuro de Delphi… bien… dejarme que os diga:

El futuro de Delphi parece más claro que nunca!.

Nota de la traducción: Pido perdon si la traducción no es completmente literal y si pueden existir alguna que otra errata. Espero, de ser así recibir vuestros comentarios para subsanarlas.

Salvador Jover