Ohjelmistoarkkitehtuurit 2012

1 Refaktorointi

Refaktorointi (refactoring, uudelleenrakentaminen) on ohjelmiston sisäisen toteutuksen parantamista ilman että ulkoinen käytös muuttuu. Yleensä tämä tarkoittaa sitä, että parannetaan ohjelmiston laadullisia ominaisuuksia, ei toiminnallisia.

1.1 Historia

1.2 Muualla

1.3 Vaiheet

  1. Tunnistetaan refaktoroinnin kohde.
  2. Kirjoitetaan TDD-testit refaktoroinnin kohteelle.
    • Testien läpimeno osoittaa, että refaktorointi on onnistunut.
  3. Refaktoroidaan (Aja useasti TDD-testit!)
    • TDD-testit osoittavat läpimennessään, ettei refaktorointi riko mitään.
  4. Varmistetaan toiminta (Aja TDD-testit!)
    • TDD-testit osoittavat, että kaikki on taas kunnossa.

1.4 Milloin refaktoroin?

  • Kolmannella kerralla
  • Virhettä korjatessa
  • Uutta toimintoa lisätessä
  • Katselmoinnin yhteydessä
  • Älä uudelleenrakenna, jos koodi ei toimi, tai aikatakaraja on lähellä

1.5 Ongelmia

  • Tietokannat
    • rakenna väliin rajapinta / välittäjä
    • Käytä oliotietokantoja oliokoodille
  • Rajapinnat ja kutsumuodot
    • Älä julkaise rajapintoja ennenaikaisesti!
    • Helpota siirtymää työkaluin.

1.6 Refaktoroinnin kohteen tunnistaminen

  • Suunnittelumallien perusteella
  • Pahan hajun perusteella
    • koodiduplikaatit, pitkät metodit, suuret luokat, pitkät parametrilistat, jatkuva muutos, haulikkokirurgia, ominaisuuskateus, dataklöntit, primitiivipakkomielle, switch- lauseet, …, viestiketjut, välimies, …, kommentti

1.7 Tunnistettujen kohteiden korjaus

  • Kutakin hajua vastaa joukko uudelleenrakentamismalleja
    • jatkuva muutos: irrota luokka
    • primitiivipakkomielle: korvaa tietoarvo oliolla; irrota luokka; korvaa tyyppitieto luokalla; …
    • kommentti: uudelleenrakenna niin, ettei kommenttia tarvita

1.8 Lista refaktoroinneista

1.9 Refaktorointi ja IDE

  • IDEn refaktorointityökalut tekevät refaktoroinnin liian helpoksi
  • Olisi silti syytä jaksaa kirjoittaa ne testit
    • jotta ymmärtää tilanteen todella
    • jotta näkee, ettei mikään mene rikki
  • Testien kirjoittamiseen menneen ajan saa moninverroin takaisin, kun ei tarvitse uhrata pitkiä aikoja syntyneiden virheiden perkaamiselle

2 Uudistaminen (re-engineering)

Ohjelmiston järjestelmällinen tutkiminen ja uudelleenkirjoitus

Päivämäärä: 2012-02-29 15:58:12 EET

Tekijä: Itkonen Jonne

Org version 7.8.03 with Emacs version 23

Validate XHTML 1.0