Número 26
21 de setembro de 2022

A estrutura do código

Cando aprendemos a programar, os nosos proxectos normalmente conteñen poucos ficheiros. Case sempre, a nosa principal preocupación é que o código compile, e non tanto se loce ben e se está ben organizado.

Porén, segundo vai aumentando a nosa ambición e comezamos a traballar en proxectos máis grandes, pronto se fai imprescindible organizar o código fonte. Esa é outra das cousas que non nos aprenden e nas que esperan que fagamos algo razoable pola nosa conta. O malo é que cada persoa ten unha idea diferente do significado de “algo razoable”.

Nalgúns proxectos, todos os ficheiros están amoreados nun só directorio. Isto ocorre moito nos programas antigos, porque xa era malo dabondo ter que usar Vi e Emacs e non lles quedaba enerxía mental para organizar os seus ficheiros nunha estrutura de directorios. Isto non é aceptable hoxe en día, así que non vou falar máis diso nesta Folla.

Na actualidade, o habitual é crear unha estrutura de directorios e poñer distintas partes do programa en distintos directorios. As principais maneiras de organizar eses directorios son a “división horizontal” e a “división vertical”.

Diagramas das divisións horizontais e verticais.

Na división horizontal, as distintas “capas” do programa van en directorios diferentes. Por exemplo: un directorio para o modelo, outro para o servidor e outro para o frontend. Na división vertical, os directorios conteñen diferentes partes da funcionalidade do programa: un directorio para a xestión de clientes, outro para o blog, outro para a tenda e outro para a interface de administración.

As dúas filosofías teñen pros e contras. A división horizontal ten a avantaxe de que agrupa as tecnoloxías usadas; por exemplo, o directorio do modelo contén todo o código que accede á base de datos e o directorio do frontend contén todo o HTML e todo o Javascript. En cambio, a avantaxe da división vertical é que todo o código de cada parte do programa está xunto: todo o código do blog está no directorio do blog, todo o código da tenda está no directorio da tenda, etc.

Persoalmente, a división vertical é a miña preferida, xa que penso que é importante que o código que implementa cada función do programa estea xunto. Para vós, a mellor opción vai depender das vosas preferencias personais e da composición do voso equipo.

Por exemplo, se traballades nun equipo de especialistas en distintas tecnoloxías (expertos en frontend, expertos en bases de datos, etc.), moitas veces é mellor organizar o código segundo a tecnoloxía que use, e para iso é mellor unha división horizontal.

Porén, se organizades o voso equipo en grupos que se adican a distintas partes do programa (o grupo da tenda, o grupo do blog, etc.), moitas veces funcionará mellor unha división vertical na que todo o código que constitúe cada parte do programa vaia xunto.

Por suposto, non tedes que limitarvos a escoller entre unha pura división horizontal ou vertical. Case todos os proxectos combinan as dúas; por exemplo, o “directorio do blog” podería conter un subdirectorio para o modelo, outro para o servidor e outro para o frontend.

Tamén podedes optar por dividir unha parte do programa nun sentido e outra parte nun sentido diferente. Por exemplo, nun programa no que o frontend usa linguaxes diferentes ao resto, é moi habitual ter un directorio para o frontend e despois dividir o resto do programa verticalmente.

Espero que esta Folla vos dea ideas sobre como organizar o voso proxecto. Se queredes a miña recomendación xenérica e totalmente desinformada, aquí vai: dividídeo verticalmente para poñer cada función do voso programa no seu propio directorio, e dividide eses directorios horizontalmente se precisades de facelo.