Рефакторисање кода

Процес реструктурирања постојећег рачунарског кода

Рефакторисање кода је процес реструктурирања постојећег рачунарског кода - промјена композиције - без промјене његовог спољашњег понашања. Рефакторисање је намијењено побољшању нефункционалних атрибута софтвера. Предности укључују побољшану читљивост кода и смањену сложеност; ово може олакшати одржавање изворног кода и створити експресивнију унутрашњу архитектуру или објектни модел да би се побољшала проширивост.

Типично, рефакторисање примјењује низ стандардизованих основних микрорефакторисања, од којих је свако микрорефакторисање (обично) ситна промјена у изворном коду рачунарског програма која или чува понашање софтвера, или бар не мијења његову усклађеност са функционалним захтјевима. Многа развојна окружења пружају аутоматизовану подршку за извођење механичких аспеката ових основних рефакторисања. Ако се добро одради, рефакторисање кода може помоћи програмерима да открију и исправе скривене грешке или рањивости у систему поједностављивањем основне логике и уклањањем непотребних нивоа сложености. Ако се лоше одради, може да упропасти спољашњу функционалност или уведе нове грешке.

Мотивација

уреди

Рефакторисање је обично мотивисано примјећивањем кодног смрада (карактеристика кода који вјероватно садржи грешке).[1] На примјер, метода која се користи може бити веома дугачка, или може бити приближан дупликат друге методе у близини. Једном препознати, такви проблеми могу се ријешити рефакторисањем изворног кода или трансформацијом у нови облик који се понаша исто као раније, али који више не „смрди”.

За дуге функције, може се издвојити један или више мањих потпрограма; или за дуплиране функције, дуплирање се може уклонити и замијенити једном дијељеном функцијом. Неуспјех у рефакторисању може резултирати нагомилавањем техничког дуга; с друге стране, рефакторисање је једно од основних средстава за отплату техничког дуга.[2]

Тестирање

уреди

Прије рефакторисања, требало би поставити модуларне тестове како би се осигурало да се функције и даље понашају како се очекује.[3] Модуларни тестови могу донијети стабилност чак и великим рефакторисањима. Заједничка стратегија која омогућава сигурно и атомско рефакторисање, које обухвата више пројеката, је складиштење свих пројеката у једном спремишту, познато као монорепо. [4]

Ако је постављено модуларно тестирање, рефакторисање је онда итеративни циклус извођења малих програмских трансформација, а затим тестирање, да би се осигурала исправност, и онда још једна мала трансформација. Ако у било којем тренутку тест не успије, посљедња мала промјена се поништава и понавља на другачији начин. Кроз многе мале кораке програм се креће од мјеста где је био до мјеста гдје би требало да буде. Да би овај итеративни процес био практичан, тестови морају да се покрећу веома брзо или ће програмер морати да проведи велики дио свог времена чекајући да се тестови изврше. Заговорници екстремног програмирања и другог агилног развоја софтвера описују ову активност као саставни дио циклуса развоја софтвера.

Аутоматско рефакторисање кода

уреди

Многи уређивачи изворног кода и интегрисана развојна окружења имају подршку за аутоматско рефакторисање. Могуће је рефакторисати код апликације и тестни код.[5] Слиједи листа неколико оваквих уређивача или такозваних претраживача за рефакторисање.

Види још

уреди

Референце

уреди
  1. ^ Fowler, Martin (1999). Refactoring. Improving the Design of Existing Code. Addison-Wesley. стр. 63ff. ISBN 978-0-201-48567-7. 
  2. ^ Suryanarayana, Girish (новембар 2014). Refactoring for Software Design Smells. Morgan Kaufmann. стр. 258. ISBN 978-0128013977. 
  3. ^ Fowler, Martin (1999). Refactoring : improving the design of existing code. Reading, MA: Addison-Wesley. ISBN 978-0201485677. OCLC 41017370. 
  4. ^ Smart, John Ferguson (2008). Java Power Tools (на језику: енглески). "O'Reilly Media, Inc.". стр. 301. ISBN 9781491954546. Приступљено 26. 7. 2018. 
  5. ^ Xuan, Jifeng; Cornu, Benoit; Martinez, Matias; Baudry, Benoit; Seinturier, Lionel; Monperrus, Martin (2016). „B-Refactoring: Automatic test code refactoring to improve dynamic analysis”. Information and Software Technology. 76: 65—80. doi:10.1016/j.infsof.2016.04.016. 
  6. ^ What's new in Xcode 9

Додатна литература

уреди

Спољашње везе

уреди