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 sessió amb Google per llegir la pàgina completa.

Inicia sessió amb Google

Amb qualsevol compte de Google. Només et demanarem que acceptis les condicions del servei.