methods of development

36
Methods of Development #1 Refactoring

Upload: ismet

Post on 19-Jan-2016

31 views

Category:

Documents


0 download

DESCRIPTION

#1 Refactoring. Methods of Development. Wat is refactoring?. Refactoring. Refactoring. Refactoren : waarom ?. Xtreme Programming. Wensen van designers veranderen vaak. Wensen van designers veranderen vaak. Wensen van designers veranderen vaak. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Methods of Development

Methods of Development

#1 Refactoring

Page 2: Methods of Development

Wat is refactoring?

Page 3: Methods of Development
Page 4: Methods of Development

Refactoring

Page 5: Methods of Development

Refactoring

Page 6: Methods of Development

Refactoren: waarom?

Page 7: Methods of Development

XtremeProgramming

Page 8: Methods of Development

Wensen van designers veranderen vaak

Page 9: Methods of Development

Wensen van designers veranderen vaak

Page 10: Methods of Development

Wensen van designers veranderen vaak

Page 11: Methods of Development

Wensen van designers veranderen vaak

!!!

Page 12: Methods of Development

Wensen van designers veranderen vaak

Page 13: Methods of Development

Wensen van designers veranderen vaak

Page 14: Methods of Development

Wensen van designers veranderen vaak

Page 15: Methods of Development

Wensen van designers veranderen vaak

Page 16: Methods of Development

Wensen van designers veranderen vaak

Page 17: Methods of Development
Page 18: Methods of Development
Page 19: Methods of Development

refactor

Page 20: Methods of Development
Page 21: Methods of Development

Schone code vs later refactoren

Page 22: Methods of Development

Schone code vs later refactorenX

Page 23: Methods of Development

Refactoren: hoe moet dat?

Page 24: Methods of Development

Minder code is betere code

Vermijdt dubbele code

Welke code lijkt veel op elkaar?

Page 25: Methods of Development

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: Methods of Development

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: Methods of Development

Wat er niet hoort moet weg

Page 28: Methods of Development

Code emigreren

Nieuwe functie / member maken

Verhuizen naar (super)object

Verhuizen naar ‘free function’

Page 29: Methods of Development

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: Methods of Development

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: Methods of Development

Verhuizen naar (super)object

OBJECT KaleidoscopeMETHODS Update RenderATTRIBUTES vector0, vector1, vector2 center zoom

Page 32: Methods of Development

Verhuizen naar (super)object

OBJECT EffectMETHODS

UpdateRender

OBJECT Kaleidoscope EXTENDS EffectATTRIBUTES vector0, vector1, vector2 center zoom

OBJECT Bloom EXTENDS EffectATTRIBUTES …

Page 33: Methods of Development

Verhuizen naar ‘free function’

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

Page 34: Methods of Development

Maak code leesbaar

Repeat

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

World->Render();

Until…

Page 35: Methods of Development

Dit kun je nu al toepassen!

Page 36: Methods of Development

Eindopdracht

Inleveren in week 12