Desenvolupar amb professionalitat

Un problema que tenim tots els que comencem a desenvolupar és el fet que ho fem tot en un sol projecte i es fem un fat de repetir codi, copiar-lo i de vegades modificant-lo a llocs diferents.

Ahir vaig decidir començar a desenvolupar correctament, ja que sinó em passo tot els dies repetint codi, modificant-lo en llocs diferents, etc. I mai sé on tinc i com tinc les coses.

En aquest fil comentaré el que he anat fent.

Xin  sep  27 setembre 2008 17:42

El primer que vaig decidir fer és crear tests unitaris per als programes que faig.

Abans d'això, anava a una funció de l'aplicació principal i allí hi feia alguna prova per comprovar que funcionava més o menys bé. Com podeu comprovar així no es pot treballar, ja que un cop fetes les proves hom les elimina i si es fa algun canvi no es pot tornar a provar.

Per solucionar això hi ha els testos unitaris. Són una llibreria anomenada "SenTestingKit" i ens permet crear classes de test per comprovar el que nosaltres volem.

Apple ha creat una plantilla de "Target" per a crear un "Bundle" de testos unitari que s'encarrega de passar tots els testos de totes les classes quan es compila. Sí, sí, només durant la compilació el test es passa, no cal executar-lo. A més, si aquest target es fica com a dependència de la compilació dels altres "Targets" els testos sempre es passaran quan es compili i si hi ha algun error aquesta no finalitzarà.

Jo ho he fet així. Cada cop que compilo es passen els testos.

Xin  sep  27 setembre 2008 17:49

Una altra forma de treballar correctament, és utilitzar frameworks per evitar tenir fitxers de codi repetits i que quan es fa alguna modificació normalment només se'n modifica una.

Jo ja he començat a experimentar per afegir totes les meves classes que es poden re-utilitzar en una framework, amb els corresponents tests unitaris per comprovar que funcionen.

D'aquesta manera, aquestes classes només es modifiquen en un sol lloc i sempre estan a punt per utilitzar-se. I si es s'arregla un error o s'hi afegeix una millora tots els projectes en poden disposar.

Xin  sep  27 setembre 2008 17:55

Em sembla que no entès el que has fet, però m'ho miraré bé perquè entenc el problema que comentes, ja que sovint em succeeix en a mi...

 sep  02 octubre 2008 17:25

El que estic fent és, a cada projecte em creo un target nou on hi fico els tests de les classes. Potser amb una captura ho veuràs millor. ;)

Quan creo una classe nova, també creo una classe de Test, on hi faré les proves de l'altra classe. Llavors, al projecte només hi compilo les classes que necessito (sense les de test) i en el target de Tests hi afegeixo les classes a provar i els seus tests.

imatge

Si mires l'arbre de classes, veus que hi he creat un grup amb els testos per poder-los ocultar quan calgui. Recordeu que un grup no equival obligatòriament a un directori…

imatge

Si mires l'arbre de targets, podeu veure el target de la framework i el del test. En el de la framework només hi ha la classe a utilitzar XCIso369. En canvi al target Tests hi ha la classe a provar (la XCIso369) i la classe on es fan els tests (la XCIso369_Test). Aquest tipus de target ja s'encarrega d'executar tots els mètodes de la classe de test que comencen per "test". Als targets també és veu que el framework hi té a dins, el target del Test, això fa que cada cop que es compili la framework també es passaran els tests.

imatge

I per acabar a l'hora de compilar els errors dels test, eviten que s'acabi la compilació. Aquí hi he ficat un error forçat, i es veu com surt representat a la compilació.

Si t'interessa el tema dels testos, si vols podem obrir un fil sobre el tema.

Xin  sep  03 octubre 2008 09:22

Selecciona'l abans d'enviar el commentari