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

Post on 31-Mar-2015

218 views 0 download

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

Methods of Development

#1 Refactoring

Wat is refactoring?

Refactoring

Refactoring

Refactoren: waarom?

XtremeProgramming

Wensen van designers veranderen vaak

Wensen van designers veranderen vaak

Wensen van designers veranderen vaak

Wensen van designers veranderen vaak

!!!

Wensen van designers veranderen vaak

Wensen van designers veranderen vaak

Wensen van designers veranderen vaak

Wensen van designers veranderen vaak

Wensen van designers veranderen vaak

refactor

Schone code vs later refactoren

Schone code vs later refactorenX

Refactoren: hoe moet dat?

Minder code is betere code

Vermijdt dubbele code

Welke code lijkt veel op elkaar?

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);

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);}

Wat er niet hoort moet weg

Code emigreren

Nieuwe functie / member maken

Verhuizen naar (super)object

Verhuizen naar ‘free function’

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)); } }

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)); }

Verhuizen naar (super)object

OBJECT KaleidoscopeMETHODS Update RenderATTRIBUTES vector0, vector1, vector2 center zoom

Verhuizen naar (super)object

OBJECT EffectMETHODS

UpdateRender

OBJECT Kaleidoscope EXTENDS EffectATTRIBUTES vector0, vector1, vector2 center zoom

OBJECT Bloom EXTENDS EffectATTRIBUTES …

Verhuizen naar ‘free function’

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

Maak code leesbaar

Repeat

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

World->Render();

Until…

Dit kun je nu al toepassen!

Eindopdracht

Inleveren in week 12