31.12.2014 Views

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Programų pertvarkymas (refactoring)<br />

Martin Fowler: Refactoring; Improving the Design of Existing Code; Addison<br />

Wesley Longman, Inc., 1999<br />

Tiek dideli, tiek <strong>ir</strong> maži projektai dažnai susiduria su tokia problema: kodas<br />

nepaliaujamai auga <strong>ir</strong> pučiasi, pridedant naujų funkcijų pradeda griūvin÷ti anksčiau<br />

parašyti moduliai, niekas normaliai nesusigaudo, kurios dalys įtakoja viena kitą <strong>ir</strong><br />

pan.. Tokiu atveju pakvimpa programų pertvarkymu (refactoring): tenka pertvarkyti<br />

(sakoma, "išvalyti") egzistuojantį kodą, išsaugant ankstesnį funkcionalumą. T.y.<br />

programos pertvarkymo metu n÷ra diegiamas naujas ar keičiamas senas<br />

funkcionalumas, tiesiog išeities tekstai tampa tvarkingesni, geriau struktūrizuoti <strong>ir</strong><br />

labiau suprantami.<br />

Nereikia n÷ sakyti, jog dar kartą perrašyti tą patį kodą m÷gsta nedaugelis. Labai<br />

nedaugelis. Tačiau nebūtina keisti viską iš karto. Martinas Fauleris moko, jog viską<br />

reikia daryti mažyčiais, aiškiai apibr÷žtais <strong>ir</strong> gerai kontroliuojamais žingsneliais.<br />

Galbūt vienas modulis bus pertvarkytas per valandą, o kitam pr<strong>ir</strong>eiks kelių m÷nesių.<br />

Kada reikia programą pertvarkyti Paprastai, palaipsniui projektuojant <strong>ir</strong><br />

programuojant, patyręs programuotojas kartu pertvarkin÷ja <strong>ir</strong> neseniai parašytą kodą.<br />

Kitas atvejis, kai reikia įdiegtį naujų funkcijų, tačiau egzistuojantis kodas joms<br />

nepritaikytas. Kaip žinoti, kurias programos vietas reikia keisti O gi tas, kurios<br />

"nemaloniai kvepia". Martinas parodo, kaip aptikti visą eilę "nemalonių kvapų" <strong>ir</strong><br />

kaip juos pažingsniui pašalinti. Rezultate gauname programą, kuri daro tą patį, tik<br />

"maloniau kvepia".<br />

Pertvarkant svarbu prisilaikyti bent dviejų principų:<br />

• tur÷ti pas<strong>ir</strong>ašius automatinius programos testus, kurie patikrina, ar pertvarkyta<br />

programa elgiasi taip, kaip <strong>ir</strong> anksčiau<br />

• pertvarkyti tik labai mažai žingsneliais <strong>ir</strong> atlikti automatinius testus - jei kuris<br />

neveiks, bus aišku, kad klaida slypi naujausiuose pakeitimuose<br />

Šiame skyrelyje aps<strong>ir</strong>ibosime vienu pavyzdžiu: video nuoma. Tai programa, kuri<br />

duotam klientui atspausdina, kokius jis filmus yra išsinuomavęs <strong>ir</strong> kiek jis turi<br />

mok÷ti. Mokestis priklauso nuo to, kuriam laikui filmas yra išnuomotas <strong>ir</strong> nuo filmo<br />

tipo. T÷ra trys filmų tipai: reguliarūs, vaikiški <strong>ir</strong> nauji filmai. Tuo tikslu<br />

konstruojama paprastut÷ klasių diagrama, leidžianti atspausdinti tekstinę ataskaitą<br />

apie klientą:<br />

143

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!