Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
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