Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота №6.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
93.7 Кб
Скачать

Лабораторна робота №6. Рефакторинг Хід роботи

«Рефакторинг - процес зміни внутрішньої структури ПО з метою полегшення розуміння її структури й спрощення подальшої модифікації без зміни зовнішнього поводження.» Це визначення взяте із книги, що поклала початок сучасному представленню про цей процес - «Рефакторинг - Поліпшення існуючого коду» Мартіна Фаулера (Refactoring: Improving the Design of Existing Code by Martin Fowler, Addison Wesley 1999). Крім того, рефакторинг може застосовуватися не тільки до вихідного коду на будь-якій мові програмування, але також до описових мов, якщо не губиться результат їхньої обробки.

Сам процес рефакторинга з'явився задовго до виходу у світ книги й став відповіддю на необхідність підтримувати більші обсяги коду колективами програмістів в адекватному стані якості.

Всім відомо, що кожний програміст пише програму у своєму, звичному для нього стилі, що відрізняється від стилю колег, а також від канонічного стилю, запропонованого авторами мови. Стиль може виражатися в іменуванні, використанні тих або інших конструкцій, типізації й т.д. На це можна не звертати уваги доти, поки його код не береться підтримувати інший програміст. Коли ж це відбувається, найчастіше, багато хто просто переписують заново вже працюючий код, мотивуючи в такий спосіб: «він був жахливий, до того ж я його погано розумів».

Крім того, існує проблема «неповороткості» - чим більше програма, тим складніше вносити в неї принципові зміни й тем складніше прогнозувати наслідку цих змін. Із цього випливає збільшення часу на модифікацію програми. Менеджерові надзвичайно складно пояснити, чому аналогічний обсяг роботи півроку назад виконувався за тиждень, а зараз - за 2. Усе через те, що після написання в код вноситься деяка кількість змін, внаслідок чого він губить початкову простоту, елегантність і ясність.

Ці проблеми програмісти намагалися вирішити загальними способами - шляхом модифікації структури програми без зміни її функціональності. Наприклад, перейменовували методи у відповідність із загальною політикою, міняли видимість і розташування класів і т.д. Все це тепер називається методами рефакторинга.

Інструментарій рефакторинга описується як безліч методів, кожний з яких характеризується ім'ям, областю застосування й механізмом перетворення. Кожне таке перетворення має невеликий розмір і чітку логіку реалізації, що зводить до мінімуму виникнення помилок внаслідок його виконання.

Автоматизований рефакторинг

Вивчивши статті про рефакторинг або навіть прочитавши книгу Фаулера, можна зробити вивід про те що, нарешті, знайдене рішення вищезгаданих проблем. Але, почавши використання принципів рефакторинга на практиці, програміст зауважує, що на його плечі лягла ще одна ноша - рефакторинг теж вимагає часу й уважності! Причому, застосовуючи методи рефакторинга на окремій ділянці коду, і не застосовуючи на інших, програміст додатково заплутує код. Або, помінявши інтерфейс класу, одержує безліч помилок в інших частинах, модулях програми. Різні методи вимагають різного часу на їхнє застосування, особливо це стосується інтерфейсів класу.

Тому, незабаром, з'явилися різноманітні засоби, що дозволяють автоматизувати процес рефакторинга.

Це були або Java середовища розробки, або плагіни до них. Це викликано тим, що реалізація рефакторинга базується на семантичному поданні програми. До того ж рефакторинг тісно переплетений з написанням коду. Всі сучасні IDE, незалежно від компілятора (або ж використовуючи його API), мають подання про код для підсвічування синтаксису й таких функцій, як автодополнение.

Отже, не склало особливої праці, додати візуальних помічників, що реалізують основні методи рефакторинга.