divendres, 4 de setembre del 2009

Primer problema: mescla de codi

Per reanudar les meues aventures amb PHP vaig decidir intentar fer una aplicació web que permetera gestionar campionats de bàsquet. L'aplicació deuria permetre a un administrador crear una competició, inscriure els equips i els seus jugadors, realitzar els sortejos dels partits i introduir els resultats i les seues estadístiques; a la resta de gent deuria permetre visualitzar els resultats i les diferents classificacions.

Em plenava de satisfacció veure com l'aplicació creixia a poc a poc i que tot el que tenia en ment ho podia plasmar en codi però, per altra part, cada vegada resultava més complicat afegir noves funcionalitats o característiques. Hi havia una sèrie de situacions que vaig adonar-me que calia evitar si volia ser capaç de crear aplicacions web d'una manera senzilla i ràpida.

Un dels principals obstacles que m'impedia avançar a un ritme decent era la mescla de codi, també coneguda com codi spaghetti, que es produïa. En només unes poques línies podien barrejar-se fins quatre llenguatges de programació diferents. Per exemple, en aquest simple fragment de codi...

<?php

$link 
mysql_connect("localhost","root","");
mysql_select_db("basquet",$link);
$result mysql_query("select * from categoria order by nom",$link);

echo 
"<table width = '20%' border = '0'>";

while (
$categoria mysql_fetch_array($result)){
  echo 
"<tr>";
  echo 
"  <td width = '15%' bgcolor = '#cccccc'>".$categoria["nom"];
  echo 
"  </td>";
  echo 
"</tr>";
}

mysql_free_result($result);
mysql_close($link);

echo 
"</table>";

?>

...es pot observar que hi ha PHP, SQL, HTML i CSS, aquestos dos últims incrustats dins del document final a base d'usar reiteradament la instrucció echo, cosa que no em convencia massa. A més, si es volguera fer ús de JavaScript, tenint en compte com han estat incrustats l'HTML i el CSS, és lògic pensar que es faria de la mateixa manera, amb echo. Per tant, serien cinc els llenguatges que hi hauria barrejats.

Aquesta barreja dificulta el manteniment en gran mesura, ja que, quan més codi hi ha, més difícil resulta identificar el llenguatge amb el que es vol treballar. A més, si a mi, que treballe a soles, em resulta complicat fer-ho en aquestes circumstàncies, imagineu un equip de desenvolupadors on cadascun d'ells fóra responsable d'un llenguatge diferent. Si el codi que generaren fóra en un estil similar al de més amunt, amb tots els llenguatges barrejats, el desenvolupament d'una aplicació web pense que seria impossible. Necessitarien treballar sobre el mateix fitxer diverses persones, per exemple, un d'ells per insertar codi HTML, un altre per insertar codi PHP i, pot ser, un altre per al JavaScript; sense que cadascun d'ells haja d'entendre el codi que ha escrit un dels altres o, pitjor encara, permetent la possibilitat de que algú puga eliminar-lo o modificar-lo.

La solució més extesa a aquest problema passa pel que s'anomena Model Vista Controlador o MVC.

MVC és un patró de disseny que separa les dades d'una aplicació, la interfície d'usuari i la lògica de control en tres components distints. A una aplicació web, el model és el sistema gestor de bases de dades; les vistes són els fitxer HTML, on es descriuen els documents que han de mostrar-se al navegador (aquestos documents poden tindre PHP al cas que s'usen estructures de control com bucles, per exemple, per escriure dades a les fileres d'una taula), i el fitxer CSS, usats per donar format als documents HTML; i el controlador el responsable de processar la interacció de l'usuari, obtindre les dades dels models, processar-les i tornar l'eixida a la vista per mostrar-la al navegador.

Doncs ja tenim identificat un dels problemes típics en el desenvolupament d'aplicacions web i una possible solució que implementaré més endavant.

continuarà...

Cap comentari:

Publica un comentari a l'entrada

Nota: Només un membre d'aquest blog pot publicar entrades.