O al menos no lo dejes decidir todo el tiempo 🙂 Una de las cosas más difícil de la Programación Orientada a Objetos es mantener el foco en generar un buen código y no perderse en la tentación de generar un mar de condicionales (a.k.a. if’s). Es este artículo la idea es mostrar al lector que es posible generar código que no contenga condicionales, o sea al menos que sean pocos. El problema con tener condicionales es que nos genera caminos alternos; cada camino puede tener su propia consecuencia; por lo que cada vez que queremos probar, debemos hacerlo por todos los caminos posibles. Si tenemos condicionales anidados la cantidad de…
-
-
Métricas para mejorar nuestro código
Unas de las tareas divertidas que me toca hacer durante el día es el Code Review de varios proyectos. Es una práctica que utilizamos a diario en Patagonian Tech porque nos permite ayudar a los más nuevos a crecer como programadores y a su vez a mantener los productos que desarrollamos para nuestros clientes con un nivel bajo de errores. Humor: posible métrica para evaluar el buen código. El otro día estaba haciendo un review a uno de mis compañeros, el código no tenía falencias en su lógica, tampoco en su sintaxis. Luego de mirarlo una y otra vez me puse a pensar que “sonaba complicado”. El fragmento de código en…
-
Minimizando dependencias en Android
Es común que cuando nos encontramos frente a un problema lo primero que atinamos es a buscar una biblioteca que ya provea una solución. Si bien es una buena práctica (Don’t repeat yourself) muchas veces esta solución trae más problemas a futuro que soluciones. Un caso particular que se suele ver mucho en Android es la necesidad de hacer la experiencia del usuario más rica, de darle más información en pantalla. Para ellos agregamos toda clase de detalles a nuestras UIs, y como escribir vistas desde cero suele ser complejo, terminamos incluyendo una biblioteca como dependencia seleccionada de alguna de las opciones populares. En general estoy de acuerdo con esa…
-
“Funciona” no es suficiente.
No es raro en esta profesión, al revisar el trabajo de otro encontrarse con algo que no es del todo semánticamente correcto o que puede escribirse de mejor manera. Tampoco es raro que nos digan “pero así funciona”. Funciona no es, o no debería al menos, ser suficiente. En el desarrollo de software existen muchos otros factures a considerar a futuro que no siempre tienen que ver con el funcionamiento actual de la aplicación : ¿el código se entiende?, ¿es eficiente?, ¿es fácil de extender si debemos agregar funcionalidades?. Quizás el aspecto más importante desde el punto comercial es que tanto cuesta corregir un error detectado, ya que en códigos escritos…
-
Hacer Aplicaciones Android Mantenibles
Una de las cosas más complicadas a lo largo del tiempo es poder mantener el código fuente de una aplicación Android en un nivel de simplicidad que nos permita a futuro introducir nuevas mejoras, arreglar errores de manera más simple o solamente poder leer el código y decir “ah, si, esto es lo que hace acá”. No siempre lo logramos, ya sea por impericia (todavía no sabemos hacerlo mejor) o por tiempo (nos apuran y en lugar de pensar la mejor manera simplemente escribimos el primer código que se nos ocurre para lograr sacar en tiempo la aplicación). En general los problemas de impericia se solucionan con capacitación, lectura y…
-
Tablas rápidas para Grails
Si hay algo odioso cuando hay que hacer una interfaz de administración, es armar la lista para cada modelo del dominio para los AMBs. Esta semana me tocó mejorar el diseño para una aplicación grails, por lo que decidí ver como se podían generar «helpers» o TagLibs en nomenclatura grails. El siguiente código genera usando bootstrap3 una tabla con paginado, botón de editar y eliminar de forma genérica: package test class ResourceTableTagLib { /** * Creates a bootstrap3 compatible datatable. * * @emptyTag * * @attr list REQUIRED List of domain models to show * @attr count REQUIRED Total registers (for pagination) * @attr labels REQUIRED Comma-separated values for the…
-
Volviendo a PHP
Hace fácil 5 años que no hago nada serio en PHP, empezando desde cero. Mayormente me ha tocado retocar cosas andando o parchar bugs boludos. Sin embargo el otro día tuve que hacer un demo chiquitito en PHP. El principal limitante era el tiempo, por lo que tenía que hacerlo rápido. Al principio intenté el viejo HTML+PHP all-in-one con ifs $_GET, $_POST, etc. Una locura, no podía avanzar. Mi mente me decía «esto va en el controlador, esto en el view» :D. Borre todo y empecé de nuevo. Pensé dos segundos y dije «tiene que haber algo». No, CakePHP no es ese «algo». Era mucha config al pedo, bloated y…
-
Mejorando el «Doble panel» en Android
Siguendo con la serie de casos en mejorar las interfaces en Android, esta vez le toca al doble panel que solemos ver en las aplicaciones cuando las usamos en una tablet. No voy a entrar en detalle de cómo implementar un doble panel con Fragments ya que en la web hay más que suficiente información para hacerlo. De lo que si vamos a hablar es de cómo mejorar el aspecto y darle al usuario una mejor experiencia. Para lograr esto lo que vamos a hacer es copiar lo que hacen Google con sus aplicaciones, com Gmail o la misma aplicación de Contactos que viene en IceCream Sandwich y que se…
-
Mejorando las UI en Android
En los últimos días me puse a ver varios de los videos de Google I/O del año pasado referidos al diseño de interfaces y diseño gráfico de android. La verdad es que con muy poco se puede cambiar el aspecto radicalmente, y la experiencia termina siendo muy superior (y si tenemos suerte podemos tener una mayor user base lo que significa más ingresos :D). Para probar diferentes consejos decidí mejorar la interfaz de mi lector del diario Río Negro, el cual era bastante feo y se puede ver al final del post lado a lado con la imagen luego de mejorar el diseño. La idea era resaltar un poco más…
-
Participando en Facebook Hacker Cup
Este año me acordé a tiempo de este evento (y la verdad que este año estuve usando por primera vez mi cuenta de Facebook :P) así que decidí probar a ver que onda. La primer impresión : se complica rendir bien teniendo familia (o una vida de por si :P); no se puede salir apenas aparecen los problemas a lo loco a cualquier hora a resolverlos. Desde el punto de vista técnico, los dos primeros problemas fueron muy fáciles. «Beautiful strings» fue trivial realmente, con pensar 2 o 3 min salía. El problema «Balanced Smileys» donde se buscaba determinar balanceo de () con al dificultad de que había caritas felices…