Рефакторисање
Превод другог издања
Потпуно преуређено и ажурирано издање – садржи потпуно нова рефакторисања и примере са кодом
Већ више од двадесет година искусни програмери широм света се ослањају у свом раду на Рефакторисање, књигу коју је написао Martin Fowler, како би унапредили дизајн постојећег кода и на тај начин уједно унапредили и одржавање софтвера, а све у циљу да њихов постојећи кôд буде лакши за разумевање.
Ново издање књиге, које се чекало са нестрпљењем, потпуно је ажурирано у циљу приказивања кључних промена на пољу програмирања. Књига Рефакторисање, Друго издање садржи ажуриран каталог рефакторисања и укључује примере кода у JavaScript-u, као и нове примере са функцијама који приказују рефакторисање без класа.
Попут претходног издања, ова књига објашњава шта је рефакторисање; зашто је потребно рефакторисати; како препознати кôд којем је потребно рефакторисање; како да успешно примените рефакторисање без обзира на то који програмски језик користите.
• Разумевање процеса и општих принципа рефакторисања.
• Брзо примењивање корисних рефакторисања како би било лакше разумети и изменити програм.
• Препознавање места у коду која „заударају” и која нам заправо дају сигнал да је потребно урадити рефакторисање.
• Истраживање рефакторисања за која су data објашњења, мотивација, механизам, као и једноставни примери.
• Креирање тестова за ваша рефакторисања.
• Препознавање компромиса и препрека у вези са рефакторисањем.
Садржај
Предговор
Уводно поглавље
Поглавље 1: Рефакторисање – први пример
Полазна тачка
Коментари полазног програма
Први корак у рефакторисању
Разлагање методе статемент
Статус: Велики број угнеждених функција
Раздвајање фаза израчунавања и форматирања
Статус: Подељен у два фајла (и фазе)
Реорганизација израчунавања по типу
Статус: Креирање података помоћу полиморфног калкулатора
Завршне мисли
Поглавље 2: Принципи рефакторисања
Дефиниција рефакторисања
Двојаки задаци .
Зашто треба рефакторисати?
Када би требало рефакторисати?
Проблеми са рефакторисањем
Рефакторисање, архитектура и YAGNI
Рефакторисање и шири процес развоја софтвера
Рефакторисање и перформансе
Одакле потиче рефакторисање?
Аутоматизовано рефакторисање
Корак даље
Поглавље 3: Нешто „заудара” у коду .
Мистериозно име
Поновљени кôд
Дугачка функција
Дугачка листа параметара
Глобални подаци
Променљиви подаци
Дивергентне измене
Operaција сачмарица
Завист међу одликама
Скупине података
Опседнутост примитивним
Понављање наредбе Switch
Петље
Елемент који је лењ
Спекулативна уопштеност
Привремено поље
Ланци порука
Посредник
Инсајдерско трговање
Велика класа
Алтернативне класе са различитим интерфејсима
Класа података
Одбачено наследство
Коментари
Поглавље 4: Прављење тестова
Вредност самотестирајућег кода
Тестирање узорка кода
Први тест
Додавање тестова
Модификовање фиксног дела
Испитивање граница
Постоји и више од овога
Поглавље 5: Увод у каталог рефакторисања
Формат рефакторисања
Избор рефакторисања
Поглавље 6: Први скуп рефакторисања
Издвајање функције
Уметање функције
Издвајање променљиве
Уметање променљиве
Промена декларације функције
Енкапсулирање променљиве
Преименовање променљиве
Увођење објекта параметра
Комбиновање функција у класу
Комбиновање функција ради трансформације
Фаза раздвајања
Поглавље 7: Енкапсулација
Енкапсулирање структуре
Енкапсулирање колекције
Замена основних података објектом
Замена привремене променљиве упитом
Издвајање класе
Уметање класе
Сакривање делегата
Уклањање посредника
Замена алгоритма
Поглавље 8: Премештање карактеристика
Премештање функције
Премештање поља
Премештање наредби у функцију
Премештање наредби у позиваоце
Замена убаченог кода позивом функције
Премештање наредби
Раздвајање петље
Замена петље серијом операција
Уклањање мртвог кода
Поглавље 9: Организовање података
Раздвајање променљиве
Преименовање поља
Замена изведене променљиве упитом
Промена референце у вредност
Промена вредности у референцу
Поглавље 10: Упрошћавање условне логике
Разлагање условне променљиве
Консолидовање условног израза
Замена угнеждених условних променљивих са
клаузулама чуварима
Замена условне променљиве полиморфизмом
Увођење специјалног случаја
Увођење тврдње
Поглавље 11: Рефакторисање – API
Раздвајање упита од модификатора
Параметаризовање функције
Уклањање контролне заставице из аргумента
Чување целог објекта
Замена параметра упитом
Замена упита параmetroм
Уклањање методе за постављање вредности
Замена конструктора са фабричком функцијом
Замена функције комandом
Замена комandе функцијом
Поглавље 12: Наслеђивање
Померање методе нагоре
Премештање поља нагоре
Померање тела конструктора нагоре
Померање методе надоле
Померање поља надоле
Замена шифре типа са поткласама
Уклањање поткласе
Издвајање наткласе
Рушење хијерархије
Замена поткласе делегатом
Замена наткласе делегатом .
Библиографија
Индекс