Рефакторисање кода
Процес реструктурирања постојећег рачунарског кода From Wikipedia, the free encyclopedia
Remove ads
Рефакторисање кода је процес реструктурирања постојећег рачунарског кода - промјена композиције - без промјене његовог спољашњег понашања. Рефакторисање је намијењено побољшању нефункционалних атрибута софтвера. Предности укључују побољшану читљивост кода и смањену сложеност; ово може олакшати одржавање изворног кода и створити експресивнију унутрашњу архитектуру или објектни модел да би се побољшала проширивост.
Типично, рефакторисање примјењује низ стандардизованих основних микрорефакторисања, од којих је свако микрорефакторисање (обично) ситна промјена у изворном коду рачунарског програма која или чува понашање софтвера, или бар не мијења његову усклађеност са функционалним захтјевима. Многа развојна окружења пружају аутоматизовану подршку за извођење механичких аспеката ових основних рефакторисања. Ако се добро одради, рефакторисање кода може помоћи програмерима да открију и исправе скривене грешке или рањивости у систему поједностављивањем основне логике и уклањањем непотребних нивоа сложености. Ако се лоше одради, може да упропасти спољашњу функционалност или уведе нове грешке.
Remove ads
Мотивација
Рефакторисање је обично мотивисано примјећивањем кодног смрада (карактеристика кода који вјероватно садржи грешке).[1] На примјер, метода која се користи може бити веома дугачка, или може бити приближан дупликат друге методе у близини. Једном препознати, такви проблеми могу се ријешити рефакторисањем изворног кода или трансформацијом у нови облик који се понаша исто као раније, али који више не „смрди”.
За дуге функције, може се издвојити један или више мањих потпрограма; или за дуплиране функције, дуплирање се може уклонити и замијенити једном дијељеном функцијом. Неуспјех у рефакторисању може резултирати нагомилавањем техничког дуга; с друге стране, рефакторисање је једно од основних средстава за отплату техничког дуга.[2]
Remove ads
Тестирање
Прије рефакторисања, требало би поставити модуларне тестове како би се осигурало да се функције и даље понашају како се очекује.[3] Модуларни тестови могу донијети стабилност чак и великим рефакторисањима. Заједничка стратегија која омогућава сигурно и атомско рефакторисање, које обухвата више пројеката, је складиштење свих пројеката у једном спремишту, познато као монорепо. [4]
Ако је постављено модуларно тестирање, рефакторисање је онда итеративни циклус извођења малих програмских трансформација, а затим тестирање, да би се осигурала исправност, и онда још једна мала трансформација. Ако у било којем тренутку тест не успије, посљедња мала промјена се поништава и понавља на другачији начин. Кроз многе мале кораке програм се креће од мјеста где је био до мјеста гдје би требало да буде. Да би овај итеративни процес био практичан, тестови морају да се покрећу веома брзо или ће програмер морати да проведи велики дио свог времена чекајући да се тестови изврше. Заговорници екстремног програмирања и другог агилног развоја софтвера описују ову активност као саставни дио циклуса развоја софтвера.
Remove ads
Аутоматско рефакторисање кода
Многи уређивачи изворног кода и интегрисана развојна окружења имају подршку за аутоматско рефакторисање. Могуће је рефакторисати код апликације и тестни код.[5] Слиједи листа неколико оваквих уређивача или такозваних претраживача за рефакторисање.
- DMS Software Reengineering Toolkit (велика рефакторисања за C, C++, C#, Кобол, Јаву, PHP и друге језике)
- Базирани на Eclipse-у:
- Embarcadero Delphi
- Базирани на Intellij-у:
- AppCode (за Objective-C, C и C++)
- Intellij IDEA (за Јаву)
- PyCharm (за Пајтон)
- WebStorm (за Јаваскрипт)
- Android Studio (за Јаву)
- JDeveloper (за Јаву)
- NetBeans (за Јаву)
- Smalltalk : Већина дијалеката укључује снажне алате за рефакторисање. Многи користе оригинални прегледач за рефакторисање, које је почетком 90-их направио Ралф Џонсон.
- Базирани на Visual Studio-у:
- Visual Studio (за .NET и C++)
- CodeRush (додатак за Visual Studio)
- Visual Assist (додатак за Visual Studio са подршком за рефакторисање за C# и C++)
- Wing IDE (за Пајтон)
- Xcode (за C, Objective-C и Свифт)[6]
Види још
Референце
Додатна литература
Спољашње везе
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads