martes, 13 de mayo de 2014

Prefiero el picado fino.

Creo (comienzo que permite divagar sin molestarse en verificar ni pensar dos veces) que esta preferencia es impronta de los últimos años de trabajo “Senior” (comillas obligatorias) en equipos más o menos medianos, más o menos “rotativos”. Picaba funcionalidad, sí, pero la mayor parte del tiempo tenía que buscar bugs en, verificar o consultar código de otros, en funcionalidad de la que no tenía más que una (valga la redundancia) vaga idea funcional. Entiéndase “no tenía mucha idea de cómo estaba programada o siquiera pensada”.

Entonces abría una carpeta (y a veces otra y otra y otra) y por los nombres me iba dando cuenta de cómo venía la mano. Me es cómodo encontrar una lista de archivos con nombres de clase más o menos coherentes, sintiéndome seguro de que no hay más que eso, simplemente porque “un namespace por carpeta, una clase por archivo”.

Ése es el picado fino. ¿Se entiende? Si no, querido lector, mejor siga su camino por otros callejones de la web, que acá ya no se le explica nada a nadie.

A veces hay un archivo con un enum y nada más. A veces una clase enorme con otras privadas y públicas y enums e interfaces y demás, adentro unas de otras, como muñecas rusas… pero en definitiva siempre una y sólo una clase en el archivo (amén). Se supone, al fin y al cabo, que cualquier otra cosa interna hace al detalle de lo que la contenedora dice (en su nombre) que hace.

A otros no. A otros les gusta el picado grueso. Un par de carpetas, las mínimas necesarias para leer el contenido con comodidad, arregladas en una jerarquía más bien plana y a otra cosa mariposa. Los nombres de los archivos se refieren no a clases sino más bien a… bueno, nunca encontré/entendí si había una regla, supongo que obedecen al (o son la medida del) sentido común de quien los crea.

Éstos otros, los del picado grueso, suelen argumentar con cierta razón que codificar una funcionalidad, tocando al mismo tiempo 5 o 10 archivos por separado, es un mareo. Uno trabaja en MVC, por ejemplo, saltando entre vista, controlador, modelo (principal y varios secundarios), un par de helpers, algo más aquí, algo más allá… y son como 10 archivos o más, si la cosa es compleja.  Y sí, puede ser… a mí no me molesta tanto, y, a la inversa, me es un mareo ver todo junto. “Así es MVC”, o “Así son las reglas de estilo en .Net”, contraataco (por no decir “así me gusta y punto”).

Normalmente, de encontrar código “picado grueso” en en una solución compilada de .Net, puteo (a veces para adentro, a veces para afuera)… pero en javascript, por ejemplo… “y bueh, así es la we’ ¿vio?”. Después empecé a usar require.js y… ¡picado fino en javascript! Y pienso (a futuro cercano, lo veo verde todavía) empezar con TypeScript y ahí los del picado grueso me van a odiar en serio, porque ya no hay excusa (salvo el gusto personal, argumento tan fuerte como el que lo utiliza –débil en mi caso-).

Pero no está mal el picado grueso, no. Es un tema de preferencias, nada más, de idiosincrasia, costumbre, organización mental de cada uno… andá a saber. Alguno dirá “hay que encontrar el punto justo”… y suena bien, pero (en este punto) prefiero seguir un (y sólo un) criterio, aunque se vaya al extremo. Habrá que ponerse de acuerdo y decidir con qué se prefiere lidiar cuando toque: ¿un archivo de 1000 líneas o una jerarquía de 5 carpetas de profundidad con 20 archivos de 30-50 líneas en cada una? Pero a veces una cosa y a veces otra (y a veces ninguna) sí que es un enjambre.

Es, en todo caso, una buen tema para animar la conversación alrededor del fuego de algún proyecto incendiado. Basta, me voá trabajar.

No hay comentarios.: