Refacció
Refactoritzar és modificar el codi perquè tingui una altre estructura, però que segueixi fent el mateix.
Introducció
Però per qué necessitem refactoritzar un codi si aquest funciona? Després de tot al compilador i a l’ordinador no li importa si el codi costa d’entendre o no està ben estructurat. Però quan una persona ha de modificar un codi, primer ha d’entendre el codi, i molts cops és difícil d’entendre el que està escrit encara que ho haguem escrit nosaltres fa unes setmanes.
Exemple
Per desenvolupar aquesta activitat farem servir un exemple, però aquest exemple és de poques línies de codi perquè sigui fàcil d’entendre. Per tant, en una situació real tindria poca utilitat refactoritzar el codi perquè segur que la majoria el podem entendre i podem tolerar que el codi no s’adapti al nostre estil, però en molts casos no és així.
Farem servir d’exemple una empresa que proporciona màquines virtuals al núvol, i factura mensualment als clients a partir del total d’hores que ha utilitzat el recurs virtual que s’ha creat sota demanda.
Per modelitzar les dades farem servir llistes, tuples i diccionaris tal com pots veure a continuació:
# recursos (màquines virtuals)
= # ResourceId: (Processor, price per hour, cores, GB of memory)
: ,
: ,
: ,
: ,
}
# recursos utilitzats per un client
= : ,
# (ResourceId, hours)
:
}El codi que haurem de refactoritzar construeix la factura mensual en format text del client:
Rental Record for ACME
CAX21 0.0744
CPX11 0.4872
CAX21 2.3312
Amount owed is 2.89A continuació tens el codi d’exemple main.py:
# funció que genera el document de text d'una factura
= 0
= f
= 0
=
=
=
=
=
# determine amount for each resource rental
:
:
= *
= / 2
:
= *
= / 2
:
= *
= / 2
:
= f
# print figures for this rental
+= f
+=
# add footer lines
+= f
return
# recursos (màquines virtuals)
= # ResourceId: (Processor, price per hour, cores, GB of memory)
: ,
: ,
: ,
: ,
}
# recursos utilitzats per un client
= : ,
# (ResourceId, hours)
:
}
=
El resultat que obtenim quan executem python3 main.py és l’esperat:
Rental Record for ACME
CAX21 0.0744
CPX11 0.4872
CAX21 2.3312
Amount owed is 2.89Estàs llegint una vista prèvia.
Inicia sessió per llegir l'article complet. Qualsevol compte obre 4 articles gratuïts al mes; l'alumnat i el professorat llegeixen les pàgines del seu curs sense límit.
Inicia sessió