Espacio de Dario Quintana

What are payday loans Payday Loans UK How much can you borrow

Abraza hoy a un programador

 

Via: mundogeek

Aprendiendo a usar frameworks, desde adentro

En estos días, en el desarrollo de aplicaciones, es muy común usar frameworks que nos ayuda a resolver un problema en particular. Inclusive existen frameworks que resuelven necesidades similares entre sí. Estas piezas de software quizás a parte de solucionar problemas, cubren alguna carencia en el “foundation”, lease: el framework base (.Net Framework 2.0, J2SE, entre otros). Esta carencia por lo general se transforman en alguna clase o un conjunto de clases que funcionan orquestadas con un fin.

Una de las ventajas que el open-source nos brinda es la posibilidad de tener el control sobre el código. Usamos el código que miles de programadores en el mundo lo dejan a nuestra disposición.

Hablando de .Net ó Java, enumeremos algunos frameworks open source, sin orden particular, solamente son los que estoy recordando en este momento: NUnit, Moq, NHibernate, Castle Project: Monorail, Windsor, Microkernel, ActiveRecord, log4net, Db4o, XUnit, Enterprise Library, SeamFramework, NakedObjects, Spring entre otros.

Seguro que estarán familiarizados con muchos de ellos, seguramente muchos de ellos son usados por Uds. todos los días.

Alguna vez se pusieron a ver el código de ellos? Les recomiendo que lo hagan, es un buen ejercicio. Mirar código realizado por otro programador puede ayudar a aprender, ordenar ideas, obtener otros puntos de vista, entre otras virtudes.

Vamos a un ejemplo, de una librería que uso y conozco como para poder opinar: NHibernate. Que podríamos obtener de NHibernate y que lo podemos llevar a nuestro código?

Nombremos algunas clases o conjunto de clases útiles que podemos usar en nuestro código (solamente enumeraré algunas):

  • StringTokenizer: port del StringTokenizer de Java.
  • ReflectorOptimizer (bajo namespace NHibernate.Bytecode).
  • SimpleMRUCache: Caché que mantenida por un algoritmo Most Recently Used.
  • ReflectHelper: servicios de reflection.
  • ThreadSafeDictionary (los muchachos que hicieron el .Net Framework 2.0 se durmieron al no incluir una clase similar, por suerte se dieron cuenta en el 3.0 hay collections, dictionaries thread-safe).

Estos items son solamente para tentarlos a que investiguen más y vean que pueden encontrar. Un punto a considerar, es que NHibernate se trata de un port (con features propias) de Hibernate -Java-, entonces quizás encuentren clases que se necesitaron portar por no estar presentes (con algún substituto) en .Net Framework. Si analizan Spring.Net desde adentro, se van a encontrar con sorpresas: no solamente fueron portadas clases, sino frameworks completos de J2SE.

En otros post analizaremos algunas consideraciones de diseño, o quizás algunos patrones de algún framework en particular, siempre hay algo para aprender.

Resultado de Encuesta: Como programamos?

Hace unos días había anunciado la encuesta en este post, y la muestra fue de 62 encuestados, la mayoría programadores .Net. Aquí están los resultados que me los facilitó muy amablemente Diego Jancic, creador de la encuesta.

Por si alguien quiere más datos aquí les dejo la planilla para que la puedan descargar.

Aquí está el resultado:

Interfaces fluidas en NHibernate

Ben Scheirman en esta entrada propone un tema interesante para aplicarlo en NHibernate: interfaces fluidas (Fluent Interfaces).

La idea es crear los mapeos de NHibernate programaticamente en vez de usar Xml, pero no solamente eso, sino que también usando interfaces fluidas.

Hay varias maneras de hacer interfaces fluidas para un dominio especifico, y también existen varias ventajas a la hora de usar el código, pero por sobre todo para leer el código. El código debe ser muy facil de leer y esto lo hace interesante. Escribir interfaces fluidas es un poco más complicado y requiere práctica.

Recursos: