Підтримка «чистоти» коду за допомогою Eclipse V3.3, Комерція, Різне, статті

Написання “чистого” коду допомагає іншим розробникам читати, розуміти і супроводжувати написаний вами код. Однак не всі згодні з визначеннями “симпатичного”, “правильного” або “чистого” коду. У кожного розробника свій стиль і своє естетичне почуття. До сих пір Eclipse форматувати імпортований код в простій, функціональної манері з мінімальною кількістю прикрас. В Eclipse V3.3 ці операції розширені, щоб надати набагато більш широкий спектр можливостей для очищення коду. Eclipse V3.3 дозволяє вам виконувати очищення коду, додавати пропущений код, а також застосовувати певний стиль кодування. Майстер допоможе конфігурувати настройки очищення і зберегти їх для подальшого використання.


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


Управління конфігурацією параметрів очищення коду за допомогою профілів


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


Параметри настройки Eclipse пропонують можливості управління профілями. Профілі можна створювати, редагувати і видаляти. Можна визначити профіль, використовуваний глобально у всьому робочому просторі. Коли ми в перший раз відкриваємо параметри настройки робочого простору і вибираємо Java > Code Style > Clean Up, То бачимо активний профіль Eclipse [built-in] (вбудований). Цей вбудований профіль попередньо налаштований і поставляється в комплекті з Eclipse. Всього є два вбудованих профілю: Eclipse і Save Participant. Вони описують дві мінімальні конфігурації очищення коду, які, по суті, видаляють непотрібний код. Налаштування вбудованого профілю можна побачити, зробивши його чинним профілем. Всі подробиці відображаються в області деталізації.


Рисунок 1. Детальна інформація по вбудованому профілем
Детальна інформація по вбудованому профілю


Існуючі профілі можна використовувати як свого роду шаблони, які можуть розширюватися або налаштовуватися. Тому виберемо в спадному меню існуючий профіль в якості діючого і натиснемо Edit. Вбудовані профілі можна змінювати. Їх можна використовувати як основу для власного профілю або в незмінному вигляді застосовувати до свого коду.


Щоб створити власний профіль, натиснемо на New. Дамо профілем ім’я і виберемо з випадаючого меню існуючий профіль для ініціалізації. Знімемо галочку з Open the edit dialog now (відкрити діалог редагування зараз) і натиснемо OK.


Рисунок 2. Новий профіль
Новий профіль


Щоб профіль можна було використовувати спільно, використовуємо функцію експорту. Щоб відкрити профіль, натиснемо Edit, А потім Export. Дамо ім’я файлу профілю, натиснемо OK, І профіль готовий для спільного використання.


Рисунок 3. Експорт профілів
Новий профіль


Щоб застосувати зовнішній профіль з XML-файла до проекту, ми повинні спочатку його імпортувати. Натиснемо Import в основних параметрах очищення коду, виберемо файл і натиснемо OK.


Типи очищення коду


Установки очищення коду діляться на п’ять основних категорій. Для кожної категорії є своя вкладка, яка складається з області налаштувань та області попереднього перегляду. Попередній перегляд відразу ж показує вплив налаштувань на код. Спробуємо різні настройки і подивимося, як міняється код в попередньому перегляді. Це дасть можливість зрозуміти, як кожна зміна впливає на код. Діалог для редагування всіх цих налаштувань з’являється на екрані після натискання на Edit в налаштуванні основних параметрів очищення коду або при створенні нового профілю з опцією Open the edit dialog now.


Далі ми обговоримо можливі настройки, їхні переваги та недоліки. Оскільки багато настройки – це справа смаку, ми не будемо давати ніяких рекомендацій. Зверніть увагу, що якщо ви не вибираєте яку-небудь опцію, ваш код залишається таким, як ви його надрукували.


Вкладка Code Style (стиль коду)


Перша вкладка пов’язана зі стилями кодування і визначає, як повинні виглядати блоки, вирази та опис змінних.



Секція Control statements (керуючі оператори)
Виберіть Use blocks in if, while, for, do statements (Використовувати блоки в операторах if, while, for і do), щоб визначити, де використовувати фігурні дужки. Фігурні дужки полегшують читаність коду, візуально об’єднуючи логічно пов’язані елементи. Використання фігурних дужок також допомагає уникнути помилок при додаванні нового оператора в умова оператора if або else. З іншого боку, занадто велика кількість фігурних дужок збільшує обсяг коду і робить його громіздким.

Виберіть Convert for loops to enhanced (Перетворювати цикли for в розширені), Щоб використовувати для циклів типу for нотацію, введену в Java ™ V5.0 для скорочення коду. Зверніть увагу, що таке перетворення несумісне з колишніми версіями.



Секція Expressions (Вирази)
Виберіть Use parentheses around conditions (Укладати умови в круглі дужки), Щоб визначити, де потрібно використовувати круглі дужки. Наведені вище коментарі, що стосуються фігурних дужок, вірні і для круглих дужок.


Секція Variable declarations (Опис змінних)
Виберіть Use modifier “final” where possible (Де можливо – використовувати модифікатор “final”), Щоб визначити, де необхідно використовувати ключове слово final. Модифікатор final не тільки описує змінні, які ніколи не повинні змінюватися, але і служить відмінним засобом для примусової установки закритих полів. Модифікатор final важливий для продуктивності, для надійної і коректної роботи.

Рисунок 4. Стилі кодування
Стилі кодування


Вкладка Member Accesses (Доступ до елементів)


Друга вкладка дозволяє задати, як слід звертатися до елементів (member) ваших типів.



Секція Non static accesses (нестатичні доступ)
Виберіть, де ви хочете використовувати кваліфікатор this для звернення до полів або методів. Кваліфікатор this допомагає швидко побачити, які поля або методи є елементами класу, який ви в даний момент пишете. Це допоможе вам відрізняти поля та локальні змінні, що використовують однакові імена.


Секція Static accesses (Статичний доступ)
За допомогою прапорців задайте настройки кваліфікації. Доступ до статичних елементів можна кваліфікувати через описує клас, щоб було легше визначити, в якому типі описаний даний елемент. З іншого боку, довгі імена класів можуть зробити громіздкими прості звернення до елементів і зробити їх на вид нечитабельним, або займають декілька рядків коду.

Рисунок 5. Доступ до елементів
Доступ до елементів


Вкладка Unnecessary code (Непотрібний код)


Третя вкладка дозволяє задавати параметри для видалення невикористаного або непотрібного коду.



Секція Unused code (Невикористаний код)
Перший прапорець дозволяє видалити невикористовувані імпорти. Якщо ви не використовуєте Organize imports (організувати імпорти) або ключову комбінацію Strg+Shift+o, То автоматичне видалення невикористовуваних імпортом допоможе зберегти ваш проект максимально компактним і не містить невикористовуваних бібліотек.

Установка другого прапорця дозволяє видалити невикористовувані приватні елементи (private members). До приватних елементів можна звертатися тільки всередині містять їх класів. Якщо ж вони не використовуються, значить, вони і не потрібні. Вони лише створюють зайве навантаження на компілятор. Їх видалення може бути досить ефективним після реструктуризації програми і виявлення значних фрагментів невикористаного коду. З іншого боку, це може бути дуже небезпечним. Уявіть, що ви створюєте прототипи нових методів, які поки ще не використовуються, але можуть використовуватися в майбутньому. Якщо активувати опцію очищення невикористаного коду, вони будуть видалені, і зроблена робота буде втрачена.



Секція Unnecessary code (Непотрібний код)
За допомогою першого прапорця можна видалити непотрібні перетворення. Використання непотрібних перетворень може привести до додаткових витрат під час виконання, залежно від вашого компілятора.

Другий прапорець дозволяє позбутися від непотрібних тегів $NON-NLS$. Ці теги використовуються Eclipse лише для того, щоб визначити рядки, які не повинні піддаватися екстерналізації.


Малюнок 6. Непотрібний код
Непотрібний код


Вкладка Missing Code (Пропущений код)


Четверта вкладка дозволяє додавати пропущений код.



Секція Annotations (Коментарі)
Визначте, які коментарі треба додавати до коду. Починаючи з Java V5.0, коментарі типу @Override або @Deprecated допомагають компілятору генерувати помилки, коли використовуються заборонені методи або коли метод з міткою override (перевизначаються) не в змозі коректно перевизначити метод в одному з суперкласів. Зверніть увагу, що ці коментарі не сумісні з колишніми версіями.


Секція Potential programming problems (Потенційні проблеми програмування)
Задайте це параметр, якщо ви хочете додати серійні ID версій. У класах, що реалізують інтерфейс Serializable, Ми рекомендуємо мати приватну статичну кінцеву змінну для серійних версій UID. Це можна згенерувати автоматично. Це використовується для перевірки сумісності під час десеріалізациі.

Малюнок 7. Пропущений код
Пропущений код


Вкладка Code Organizing (Організація коду)


Остання за порядком, але не по значущості, п’ята вкладка допомагає організувати код.



Секція Formatter (форматер)
Скористайтеся їй, якщо в процесі очищення коду повинен використовуватися форматер. Перевірте параметри настройки форматер: Preferences > Java > Code Style > Formatter.


Секція Imports (Імпорт)
Скористайтеся їй, якщо потрібно використовувати опцію Organize Imports (Організовувати імпорти). Перевірте параметри настройки опції Organize Imports: Preferences > Java > Code Style > Organize Imports.


Секція Members (Елементи)
Скористайтеся їй, якщо хочете впорядкувати елементи за алфавітом. Іноді для зручності орієнтування в програмному коді добре, коли елементи організовані в алфавітному порядку. У свою чергу, проти цього можуть бути свої аргументи. Уявіть, що ви так структуруєте код, що методи, що викликають один одного, знаходяться поруч один з одним для зручності орієнтування в коді. Алфавітна сортування реорганізує їх так, що вони будуть розташовуватися в незручному порядку. Оглядовий уявлення пропонує дуже зручну функцію, що дозволяє сортувати подання елементів, не змінюючи їх порядок в коді. Конкретні налаштування та опції сортування елементів можна знайти в Preferences (Параметри)> Java> Appearance (зовнішнє уявлення)> Members Sort Order (порядок сортування елементів).

Рисунок 8. Організація коду
Організація коду

Як застосовувати профілі


Після того, як профіль очищення коду створений, застосувати його до конкретного коду можна різними способами. Найпростіший спосіб – відкрити контекстне меню в редакторі Java і вибрати Source (джерело)> Clean Up (очистити).


Малюнок 9. Відкриття майстра очищення коду
Відкриття майстра очищення коду


В результаті буде запущено майстер очищення коду, зображений нижче.


Малюнок 10. Майстер очищення коду
Майстер очищення коду


Майстер направляє вас в процесі очищення обраних джерел. Опис у верхньому лівому куті показує, скільки проектів і одиниць компіляції буде очищено. Зазвичай до одиниць компіляції застосовують уже сконфігурованих профіль. Тим не менш, можлива індивідуальна настройка очищення коду безпосередньо перед його застосуванням. Це може бути корисним, якщо ви хочете перевірити, як певна настройка відіб’ється на коді.


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


За замовчуванням існує один глобальний профіль очищення коду для всієї робочої області. Проте в параметрах проекту можна вказати профіль очищення коду для кожного окремого проекту. Для цього відкрийте властивості проекту та перейдіть до Java Code Style (стиль коду Java)> Clean Up (очистити), Як показано нижче.


Малюнок 11. Застосування профілів
Застосування профілів


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


Малюнок 12. Попередній перегляд результатів
Попередній перегляд результатів


У дереві перераховані всі одиниці компіляції, які торкнеться передбачувана очищення коду. Ви можете зайти в це дерево, щоб вибрати різні зміни одиниці компіляції. При виборі зміни показується вихідний текст і текст після рефакторинга у формі зіставлення. Після огляду змін ви, можливо, не захочете застосовувати всі з них. В цьому випадку можна просто зняти позначку у тих змін, які виконувати не потрібно. Натискання Finish запускає виконання процесу очищення коду.


Корисні поради


Деякі рефакторінговие операції очищення, наприклад, Convert for loops to enhanced (перетворити цикли for в розширені) або Add missing annotations (додати пропущені коментарі), Прив’язані до версій Java 5.0 або 6.0 і можуть застосовуватися, лише якщо вихідний файл скомпільований відповідно до необхідної версією Java. Майстер очищення коду дозволяє вибрати ці рефакторінговие опції незалежно від використовуваної версії Java. Тому, якщо раптом ваші цикли типу for не конвертуються або заборонені методи не анотується як годиться, перевірте робочу область або проект на відповідність певному рівню компілятора в Preferences (Параметри)> Java> Compiler (компілятор).


Після декількох запусків майстра очищення коду та правильного налаштування вашого профілю, ви, можливо, не захочете при кожній наступній операції очищення знову клацати по кнопках майстра. В цьому випадку можна просто відключити майстер на сторінці налаштування профілів у Preferences > Java > Code Style > Clean Up.


Малюнок 13. Приховати / показати майстер очищення коду
Приховати / показати майстер очищення коду


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


Малюнок 14. Застосування фільтрів
Застосування фільтрів


Операції очистки коду можуть виконуватися не тільки вручну, а й під час збереження файлу Java. Щоб включити цю функцію, відкрийте Window> Preferences> Java> Editor> Save Actions (дії при збереженні) і виберіть додаткові дії. Налаштуйте дії з очищення коду, як описано вище, і вони будуть виконуватися при кожному збереженні файлу Java. Зверніть увагу, що ці дії можуть виявитися ресурсоємними і загальмувати роботу. Крім того, якщо забути про включеній опції очищення коду, вас може здивувати, що тільки що написаний вами код після збереження виглядає по-іншому.


Малюнок 15. Виконання очищення коду під час збереження
Виконання очищення коду під час збереження

А тепер?


Очищення коду є корисним інструментом, який поліпшує оформлення вашого коду і допомагає іншим розібратися в ньому. Можливо, вона навіть зробить ваш код більш стійким до помилок. Однак стиль кодування – Це справа смаку. Наприклад, люди, які в минулому уникали великої кількості лапок, навряд чи тепер будуть використовувати блоки кожен раз, коли майстер очищення коду буде пропонувати цю дію.


Очищення коду не вирішує концептуальних або функціональних проблем, по крайней мере, в поточній версії Eclipse. Але вона може заощадити великий обсяг роботи, представляючи код в зрозумілому вигляді. Дії, що виконуються майстром, великі і вирішують багато проблем, пов’язаних зі стилями та угодами кодування. Організації повинні вибрати власний стиль та угоди для кодування, тому корисно, щоб майстер був розширюваним, хоча в Eclipse V3.3 це не так. Ідея очищення коду актуальна не тільки в світі Java, але також могла б бути корисною і для інших мов, таких як C / C + +, PHP, Python, Perl і т. д. Буде цікаво подивитися, як спільнота прийме цю функцію і в яких напрямках вона буде розвиватися.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*