582334 TDD-ohjelmointimenetelmä ja koodin suunnittelu (5 op), syksy 2009
582334 TDD programming technique and designing code (5 cr), autumn 2009

Kurssiesittely Luennot Harjoitukset

Harjoitus 6: Legacy Code. SOLID Principles.

Kotitehtävät

max 7 pistettä

  1. Lue artikkeleita kustakin SOLID-periaatteesta, niin että tiedät mistä niissä on kyse, minkä jälkeen etsi kirjoittamiesi ohjelmien koodeista SOLID-periaatteiden rikkomuksia. Voit etsiä rikkomuksia tämän kurssin aikana tai aiemmin kirjoitetusta koodista. Ota löytämäsi näitä periaatteita rikkovat koodit mukaan laskuharjoitustilaisuuteen. Tulosta löydetyistä rikkomuksista ainakin osa paperille (pari paperiarkkia), jotta tehtävää olisi helpompi käsitellä laskuharjoitustilaisuudessa.

    Alkuperäiset SOLID-periaatteiden artikkelit (SRP, OCP, LSP, ISP, DIP) ovat sivulla http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod (kannattaa vilkaista myös pakkauksia koskevia periaatteita: REP, CCP, CRP, ADP, SDP, SAP). Yleiskatsauksen voi saada kuuntelemalla Hanselminutes #145 -podcastin, jossa selitetään niistä jokainen. Luennon 9 luentomateriaalissa on myös lisää linkkejä.

    1 piste: Kaikki viisi periaatetta on luettu ja ymmärretty.
    2 pistettä: Omasta koodista on löydetty esimerkki yhden SOLID-periaatteen rikkomuksesta.
    3 pistettä: Omasta koodista on löydetty esimerkkejä kolmen eri SOLID-periaatteen rikkomuksesta.

  2. Kirjoita testejä tämän projektin (poikkeuksellisen rumalle) legacy-koodille. Tämä Sorsastus-niminen ohjelma osaa mitata lähdekoodeista metriikoita ja profiloida ohjelman suoritusaikaa. Siitä pitäisi saada erotettua koodirivien laskeminen omaksi yleiskäyttöiseksi luokakseen. Refaktoroi Sorsastus-ohjelmaa siten, että koodirivien laskenta (myös tyhjät ja kommenttirivit) on erotettu omaksi luokakseen, jolla ei ole riippuvuuksia muuhun ohjelmaan. Sorsastus-ohjelman pitää käyttää tätä samaa luokkaa, eikä ohjelman toiminnallisuus saa muuttua.

    Lue artikkeli Working Effectively With Legacy Code (PDF) ja käytä siinä neuvottuja menetelmiä tämän tehtävän tekemisessä. Kun olet kirjoittanut testejä, niin kokeile tehdä pieniä muutoksia testattavaan koodiin - jos testit eivät havaitse muutosta, niin testien kattavuus ei ole riittävä ja sinun pitää kirjoittaa enemmän testejä, ennen kuin voit refaktoroida koodia turvallisesti. Sorsastus-projektin saa käännettyä suoritettavaksi JAR-tiedostoksi mvn package -komennolla.

    1 piste: Koodista on tunnistettu muutettavat luokat ja ne ympäröivä "inflection point", jolle testit pitää kirjoittaa.
    2 pistettä: Muutettavan koodin ulkoiset ja sisäiset riippuvuudet on katkottu, niin että koodille voidaan kirjoittaa testejä. Ohjelman toiminnallisuus ei ole muuttunut.
    3 pistettä: Muutettavalle koodille on kirjoitettu "test covering" -tyyppisiä testejä riittävästi, että ohjelmaa voidaan turvallisesti muuttaa. Ohjelman toiminnallisuus ei ole muuttunut.
    4 pistettä: Koodirivien laskenta on refaktoroitu omaksi luokakseen, jolla ei ole riippuvuuksia ohjelman muihin osiin. Ohjelman toiminnallisuus ei ole muuttunut.

Harjoitustilaisuudessa käydään antamassa kurssipalautetta ja järjestetään Coding Dojo.


Viimeksi muokattu 01.12.2010 21:04 Copyright © 2009 Esko Luontola