
- •Лабораторна робота №6. Рефакторинг Хід роботи
- •Автоматизований рефакторинг
- •Загальні відомості про всі Java ide, що підтримують рефакторинг
- •Ситуація на ринку Java ide
- •Рефакторинг в Intellij idea
- •Code Inspection і автоматизований рефакторинг
- •Плагіни
- •Рефакторинг в Eclipse
- •Рефакторинг в Sun NetBeans
- •Висновки
- •Порівняльна таблиця методів рефакторинга для мови Java
Рефакторинг в Intellij idea
Ця IDE[, відрізняється від інших незвичайної для інтегрованого середовища компонуванням. Продуктова лінійка складається з однієї версії. До неї входить саме середовище, що володіє найрозвиненішими можливостями в області семантичного аналізу, а також набір плагінов, що розширюють її функціональність в інтеграції із фреймворками, серверами додатків і т.д. Останнім часом значно збільшилася кількість плагінов сторонніх виробників - як безкоштовних, так і платних.
На рівні середовища реалізована більшість загальних методів рефакторинга для Java коду (див. табл.1). Також, підтримується рефакторинг для JSP сторінок, CSS файлів, JavaScript, HTML файлів.
Code Inspection і автоматизований рефакторинг
В Intelli IDEA існує функція, відсутня в інших IDE, а саме - Code Inspection (якщо не взяти до уваги зв'язування з рефакторингом, щось схоже інтегроване й в Eclipse). Основне призначення її - автоматичний аналіз програми на предмет типових або неприйнятних по різних причинах помилкових прийомів програмування.
Наприклад, за технологіями:
Java SE: використання в Java SE 5 проекті конструкцій з більше ранніх версії - цикл по всіх елементах колекції за допомогою ітератора й повного синтаксису циклу, явне огортання/розгортання елементарних типів, не параметризироване використання класів колекцій;
Java ME: використання Object[].length в умові циклу, ініціалі затори масиву великого розміру;
Java EE: неправильне використання тегів і атрибутів в HTML і CSS.
Після аналізу програмного коду користувач, для деяких inspection може виконати визначені дії, наприклад, використати новий, спрощений формат циклу в Java SE 5. Причому, перетворення середовище виконає сама - видалить змінну итератора, створить змінну екземпляра колекції й перетворить формат циклу.
Плагіни
Поряд з базовими можливостями IDE існують плагіни сторонніх розробників. Наприклад, Sixth & Red River Software пропонує цілу лінійку плагінов:
Refactor-J - доповнює існуючі можливості такими як поділ класів, перетворення циклів - поділ і об'єднання, зміна вхідних і вихідних параметрів методів;
Refactor-X - додає підтримку рефакторинга XML коду - перетворення тег-атрибут, огортання-розгортання тегів і видалення тегів і атрибутів.
Крім них компанія пропонує ще 2 дуже цікавих продукти - це Inspection-JS - code inspection для JavaScript і MetricsReloaded для виміру якості коду в числах (LOC, SLOC для Java, JSP, XML і HTML і інші).
Комбінування code inspection з елементами рефакторинга дає в руки професіоналові небачену раннє владу над більшими обсягами коду. Тепер існує можливість автоматизована знаходити об'єкти застосування деяких методів рефакторинга, не прибігаючи до просматриванию коду.
Рефакторинг в Eclipse
Eclipse являє собою базову платформу з набором плагінов. Ця платформа взагалі не прив'язана ні до якої мови програмування.
У версії 3.0 був покладений початок відділенню засобів обробки вихідного коду від Java Development Tools (JDT), у який входили засоби підтримки рефакторинга.
У рамках цього були виділені 2 плагіна, відповідальних за незалежну від мови підтримку рефакторинга:
org.eclipse.ltk.core.refactoring - відповідає за бізнес-логіку рефакторинга;
org.eclipse.ltk.ui.refactoring - реалізація користувальницького інтерфейсу.
У базовій поставці Eclipse існують стандартні для Java IDE засобу рефакторинга, представлені в меню Refactoring в Java Perspective. Вони реалізують відповідні методи стосовно до Java.
Крім класичних методів варто відзначити “Infer generic Type Arguments”, що дозволяє визначити параметри для класів-шаблонів.
Підтримка інших мов і технологій (наприклад, JSP), реалізована у відповідних наборах плагинов:
WTP - Web Tools Project, що представляє набір плагинов для web розробки;
CDT - C++ Development Tools, набір плагинов для C++ розробки;
і т.д.
Так, наприклад, у версії 1.5 Web Tools Project, планованої до випуску одночасно з Eclipse 3.2, планується реалізувати наступні методи рефакторинга:
Rename, Delete, Move стосовно до класу з реалізацією змін в JSF і JSP станицях, що використають цей клас;
Rename, Delete стосовно до JSP, JSF сторінки;
Rename, Delete стосовно до методу або властивості Managed Bean з реалізацією змін в JSF сторінці.
У цілому, проект Eclipse пропонує як базову підтримку рефакторинга незалежно від мови, так і досить якісну підтримку для Java.