1. Escribir las pruebas
2. Construir lo necesario para pasar esas pruebas.
3. Mejorar el código.
RED
GREEN
REFACTOR
class A
{
B b;
A(B b)
{
this.b = b;
}
}
class M
{
...
B b = new B();
A a = new A(b);
}
class A
{
B b;
A()
{
}
void setB(B b)
{
this.b = b;
}
}
class M
{
...
B b = new B();
A a = new A();
a.setB(b);
}
/**
* @param Object $object
* @param $item
*/
public function exampleAction(Object $object, $item)
{
foreach ($object->getCarriers() as $i => $value) {
if ($item->getCount() > 2 && $value == 100) {
$option = $i;
}
}
//Nasty code
//More nasty code
//And more
//And more
//And more . . .
foreach ($object->getOtherThing() as $option => $value) {
if ($item->getMount() > 100 && $value == 'A') {
$item->setMountType($option);
}
}
$item->setCarrier($option);
}
La refactorización es como resolver el cubo de Rubik. Se necesitan muchos pasos pequeños para lograr un objetivo mayor."
No basta con que el código funcione, los programadores que se conforman con esto no son profesionales."
Y recuerden, las gafas aquí significan. . .
Que no sé, nada de
testing.
Que sé, pero no lo
aplico.
Que mis test me
respaldan.