#1Refactoring. Xtreme Programming Wensen van designers veranderen vaak.

36
Methods of Development #1 Refactoring

Transcript of #1Refactoring. Xtreme Programming Wensen van designers veranderen vaak.

Page 1: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Methods of Development

#1 Refactoring

Page 2: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wat is refactoring?

Page 3: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.
Page 4: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Refactoring

Page 5: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Refactoring

Page 6: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Refactoren: waarom?

Page 7: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

XtremeProgramming

Page 8: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

Page 9: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

Page 10: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

Page 11: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

!!!

Page 12: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

Page 13: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

Page 14: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

Page 15: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

Page 16: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wensen van designers veranderen vaak

Page 17: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.
Page 18: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.
Page 19: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

refactor

Page 20: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.
Page 21: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Schone code vs later refactoren

Page 22: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Schone code vs later refactorenX

Page 23: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Refactoren: hoe moet dat?

Page 24: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Minder code is betere code

Vermijdt dubbele code

Welke code lijkt veel op elkaar?

Page 25: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

D3DXHANDLE refractionTechnique, skyTechnique, glowTechnique;

g_refractionEffect->FindNextValidTechnique(0, &refractionTechnique);

g_refractionEffect->SetTechnique(refractionTechnique);

g_skyEffect->FindNextValidTechnique(0, &skyTechnique);

g_skyEffect->SetTechnique(skyTechnique);

g_glowEffect->FindNextValidTechnique(0, &glowTechnique);

g_glowEffect->SetTechnique(glowTechnique);

Page 26: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

D3DXHANDLE refractionTechnique, skyTechnique, glowTechnique;

g_refractionEffect->FindNextValidTechnique(0, &refractionTechnique);

g_refractionEffect->SetTechnique(refractionTechnique);

g_skyEffect->FindNextValidTechnique(0, &skyTechnique); g_skyEffect->SetTechnique(skyTechnique);

g_glowEffect->FindNextValidTechnique(0, &glowTechnique); g_glowEffect->SetTechnique(glowTechnique);

void InitalizeEffect(D3DXEFFECT *effect, D3DXHANDLE &technique){ effect->FindNextValidTechnique(0, &technique); effect->SetTechnique(technique);}

Page 27: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Wat er niet hoort moet weg

Page 28: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Code emigreren

Nieuwe functie / member maken

Verhuizen naar (super)object

Verhuizen naar ‘free function’

Page 29: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Nieuwe functie / member void UpdateKaleidoscope(int kaleidoSides, float time) { … tc[0] = center + zoom * D3DXVECTOR2(cosf(angle - 2.0f * 3.141592654f

/ 3.0f), sinf(angle - 2.0f * 3.141592654f / 3.0f)); tc[1] = center + zoom * D3DXVECTOR2(cosf(angle), sin(angle)); tc[2] = center + zoom * D3DXVECTOR2(cosf(angle + 2.0f *

3.141592654f / 3.0f), sinf(angle + 2.0f * 3.141592654f / 3.0f)); … float triangleVertices[] = { p0.x, p0.y, 0.0f, tc[0].x, tc[0].y, p1.x, p1.y, 0.0f, tx1.x, tx1.y, p2.x, p2.y, 0.0f, tx2.x, tx2.y }; g_d3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1,

triangleVertices, 5 * sizeof(float)); } }

Page 30: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Nieuwe functie / member void UpdateKaleidoscope(int kaleidoSides, float time) { tc[0] = center + zoom * D3DXVECTOR2(cosf(angle - 2.0f * 3.141592654f /

3.0f), sinf(angle - 2.0f * 3.141592654f / 3.0f)); tc[1] = center + zoom * D3DXVECTOR2(cosf(angle), sin(angle)); tc[2] = center + zoom * D3DXVECTOR2(cosf(angle + 2.0f * 3.141592654f /

3.0f), sinf(angle + 2.0f * 3.141592654f / 3.0f)); }

void RenderKaleidoscope() { float triangleVertices[] = { p0.x, p0.y, 0.0f, tc[0].x, tc[0].y, p1.x, p1.y, 0.0f, tx1.x, tx1.y, p2.x, p2.y, 0.0f, tx2.x, tx2.y }; g_d3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, triangleVertices, 5

* sizeof(float)); }

Page 31: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Verhuizen naar (super)object

OBJECT KaleidoscopeMETHODS Update RenderATTRIBUTES vector0, vector1, vector2 center zoom

Page 32: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Verhuizen naar (super)object

OBJECT EffectMETHODS

UpdateRender

OBJECT Kaleidoscope EXTENDS EffectATTRIBUTES vector0, vector1, vector2 center zoom

OBJECT Bloom EXTENDS EffectATTRIBUTES …

Page 33: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Verhuizen naar ‘free function’

string ToLower(string s) { transform(s.begin(), s.end(), s.begin(), ::tolower); return s; }

Page 34: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Maak code leesbaar

Repeat

Input->update(); Physics()->update(); World->Update();

World->Render();

Until…

Page 35: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Dit kun je nu al toepassen!

Page 36: #1Refactoring.  Xtreme Programming  Wensen van designers veranderen vaak.

Eindopdracht

Inleveren in week 12