Principios del programador

De vez en cuando le doy una ojeada a programame, un clon de meneame temático de programación, y voy encontrando cosillas interesantes.

En esta ocasión, una traducción del artículo Principled Programming al castellano, Los principios del programador, la verdad me ha parecido un artículo que hay que recordar de vez en cuando para tener más presentes estos principios para mejorar nuestro trabajo.
Los diferentes principios son:

El Principio del Carácter Personal establece: Escribe tu código de forma que refleje, y saque a relucir, solo lo mejor de tu carácter personal.

El Principio de la Estética establece: Esfuérzate por conseguir la belleza y la elegancia en cada aspecto de tu trabajo.

El Principio de la Claridad establece: Dale el mismo valor a la claridad que a la corrección. Utiliza activamente técnicas que mejoran la claridad del código. La corrección vendrá casi por sí sola.

El Principio de la Distribución establece: Usa la distribución visual de tu código para comunicar la estructura de tu código a un lector humano.

El Principio de lo Explicito establece: Intenta siempre favorecer lo explícito sobre lo implícito.

El Principio de Código Auto-Documentado establece: La documentación más fiable para el software es el propio código. En muchos casos, el propio código es la única documentación. Por lo tanto, esfuérzate en hacer que tu código sea auto-documentado, y allí donde no sea posible, añade comentarios.

El Principio de los Comentarios establece: Comenta mediante frases completas para resumir y comunicar la intención.

El Principio de las Suposiciones establece: Da los pasos que sean razonables para comprobar, documentar y prestar atención a las suposiciones hechas en cada módulo y rutina.

El Principio de la Interfaz con el Usuario establece:Nunca hagas que el usuario se sienta estúpido.

El Principio de Volver Atrás establece: El momento de escribir buen código es justamente el preciso momento en el que lo estás escribiendo.

El Principio de El Tiempo y El Dinero de Otros establece: Un verdadero profesional no gasta el tiempo ni el dinero de otras personas produciendo software que no esté razonablemente libre de fallos; que no esté mínimamente probado; que no cumpla con los requisitos establecidos; que esté falsamente adornado con características innecesarias; o que tenga un aspecto deplorable.

Habrá que intentar cumplir estos principios en la medida de lo posible, aunque a veces los tiempos ajustados no nos ayudarán demasiado a hacerlo.

Como todos los meses de Agosto...

... al llegar la fiesta mayor.

Es el principio de la canción 15 de Agosto del grupo maño Ixo Rai!, día que coincide con las fiestas mayores de la mitad de poblaciones del país, entre ellos mi pueblo, San Esteban de Litera en honor a San Roc (San Roque).

Las fiestas empiezan mañana martes 14 hasta el domingo 19, el programa de fiestas está disponible en la web no oficial desde hace unos días en pdf. Como se puede ver, una programación muy típica de pueblos de la zona: fútbol, juegos aragoneses, petanca, tiro al plato... menos vaquillas de todo, por la noche orquesta y simultáneamente fiesta en las peñas al menos hasta el inicio de la discomóvil.

Después lo más curioso, los resopones y almuerzos (que son gratis), que creo se hace en muy pocos sitios, además que las peñas regalamos la bebida, eso sí sólo cervezas y poncho (bebida hecha a base de vino y melocotón), y si hay suerte en algún sitio hasta refrescos :), por eso no hace falta ni que lo diga... quien quiera que se acerque. Ah! se me olvidaba seguramente después de cada resopón habrá after probablemente en La Carpa que últimamente somos los que liamos más juerga.

Menos mal que todavía me quedará una semana de vacaciones para recuperarme.

Usar Facelets con Tomahawk

Después de empezar a usar facelets, necesitaba utilizar, cómo no, los componentes de myfaces tomahawk, para esto hay una documentación muy buena en el wiki de apache, use facelets with tomahawk.

El primer paso que debemos dar es crear un taglib.xml que describa cada componente, está recomendado llamarlo tomahawk.taglib.xml por si necesitaramos añadir alguno más, podemos utilizar el que está puesto como ejemplo en el wiki.

También debemos añadir en el web.xml un context-param con param-name facelets.LIBRARIES con el param-value que apunte dónde está nuestro taglib, ej:/WEB-INF/tomahawk.taglib.xml.

Con esto nos funcionarían casi todos los componentes, pero en el caso del updateActionListener no funcionaría, en JSF 1.2 se puede usar el equivalente del core setPropertyActionListener, pero en mi caso al utilizar la implementación de myfaces 1.1.5, que es una implementación de la especificación JSF 1.1, necesitaba este componente. Para poder utilizarlo, es necesario, descomentar la línea que describe el componente updateActionListener, y descargarnos el .jar TagHandler de jsf-comp y añadirlo a nuestro proyecto.

Frameworks de PHP

En maestrosdelweb, han escrito dos artículos Los Frameworks de PHP agilizan tu trabajo (y II).

Aquí nos presentan algunos de los muchos frameworks que implemetan el patrón MVC de PHP, de los que alguno no conocía su existencia, eso sí he hechado de menos phpMVC, que es un port a PHP de struts y creo que está bastante utilizado al ser de los más veteranos.

Aprovecho también para comentar que hace un tiempo que está disponible la traducción al español de la guía de Symfony. Symfony, la guía definitiva.

Parece que poco a poco hay más documentación en español y alguna iniciativa interesante para poder aprender a trabajar de una forma más ordenada con PHP, empezando por la documentación oficial de PHP5.

Ejemplos en JavaConGanas

Desde JavaConGanas, el recurso online para todos aquellos que tengan interés en trabajar con Java, hace unos días que se ha creado un proyecto en google code, para compartir código de ejemplo, el proyecto se llama jcg-samples.

La idea es mostrar código básico para empezar a trabajar con librerías/frameworks Java, como complemento a la documentación que se pueda encontrar por internet. Por ahora hay subidos al repositorio SVN tres ejemplos disponibles, sobre Spring MVC, Spring DAO y JSF.

Si alguien está interesado en colaborar pasándonos código, puede contactar mandándonos un correo a mi(danilat83 en gmail punto com) o a Jordi(jmonne en gmail punto com), y cómo no, también puede hacerlo en el wiki registrándose y editando el javapath o el glosario.