Post on 19-Jan-2016
description
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