Escriu per cercar…

Refactoring

Refactoritzar és modificar el codi perquè tingui una altre estructura, però que segueixi fent el mateix.

S'ensenya a
Entorns de desenvolupamentVerificació i optimització de programariDAW-BIOProgramació orientada a objectesProves, registre i desplegamentPYTHON

Introducció

Aquests dos programes dibuixen exactament el mateix vaixell.

python
Un vaixell, escrit de seguida
from turtle import *

width(2)

forward(100)
left(60)
forward(40)
left(120)
forward(140)
left(120)
forward(40)
left(60)
penup()
forward(70)
left(90)
forward(34.6)
pendown()
left(90)
forward(120)
backward(120)
right(90)
penup()
backward(34.6)
right(90)
backward(70)
pendown()
penup()
forward(70)
left(90)
forward(34.6)
pendown()
left(90)
forward(100)
right(135)
forward(141.4)
right(135)
forward(100)
right(180)
penup()
backward(34.6)
right(90)
backward(70)
pendown()
penup()
backward(30)
pendown()
forward(200)
penup()
backward(170)
pendown()

Funciona. Ara digues, sense executar-lo, quina d’aquestes línies dibuixa la vela.

No es pot. És una llista de quaranta ordres i no hi ha res que digui on acaba una part i on comença la següent.

Ara mira el mateix dibuix escrit d’una altra manera:

python
El mateix vaixell, per parts
from turtle import *


def hull():
    forward(100)
    left(60)
    forward(40)
    left(120)
    forward(140)
    left(120)
    forward(40)
    left(60)


def to_deck():
    penup()
    forward(70)
    left(90)
    forward(34.6)
    pendown()


def from_deck():
    penup()
    backward(34.6)
    right(90)
    backward(70)
    pendown()


def mast():
    to_deck()
    left(90)
    forward(120)
    backward(120)
    right(90)
    from_deck()


def sail():
    to_deck()
    left(90)
    forward(100)
    right(135)
    forward(141.4)
    right(135)
    forward(100)
    right(180)
    from_deck()


def waterline():
    penup()
    backward(30)
    pendown()
    forward(200)
    penup()
    backward(170)
    pendown()


def boat():
    hull()
    mast()
    sail()
    waterline()


width(2)
boat()

Són les mateixes ordres, en el mateix ordre. No n’hi ha cap de nova i no se n’ha tret cap.

L’única cosa que ha canviat és que ara tenen nom.

I ara sí que pots contestar la pregunta: la vela és a sail.

Això és refactoritzar: canviar com està escrit un programa sense canviar què fa.

El segon programa també et deixa veure l’estructura d’un cop d’ull:

Estàs llegint una vista prèvia.

Inicia la sessió amb Google per llegir la pàgina sencera.

Inicia la sessió amb Google

Només et demanarem que acceptis les condicions del servei.