Як програміст, який працює з різними мовами і на різних платформах, я зіткнулася в певний момент часу з однією несподіваною проблемою: для проведення рев'ю або ж написання власного коду, доводилося витрачати досить багато часу на перемикання між IDE і мовами. Виникла потреба в якому-небудь інструменті, який допоміг би мені робити це ефективніше і без втрати концентрації. І раптово мені на допомогу прийшов колір. І я хочу поділитися цим маленьким лайфхаком.
У всіх IDE є така чудова функція, як підсвічування синтаксису. Все б добре, але скрізь вона різна і навіть всередині одного середовища розробки може відрізнятися для різних мов. Але головне те, що підсвічування не допомагає досить часто (особисто мені) розрізняти структурні компоненти, такі як методи, змінні, класи, структури... Вони, як правило, відображаються одним кольором і я вирішила підібрати свою колірну схему, яка б виконувала функцію диференціації не тільки синтаксичних елементів (як то ключові слова), але і семантичних (класи, структури, методи і функції).
Приклад схеми кольорів Darkceв Android Studio
Підсвічені в принципі тільки ключові слова і константи
Початок концепції поклала схема кольорів Ciapre для Xcode. Вона спочатку (та й варто визнати, сама IDE) надає такий семантичний поділ саме кольором. Flat кольору не ріжуть очі і досить сильно відрізняються для різних типів семантичних елементів.
В результаті вийшов приблизно наступний поділ:
- Ключові слова - червоний
- Reference Types (класи) - жовтий
- Інтерфейси - помаранчевий
- Value Types - фіолетовий
- Костянтні значення - теж фіолетовий, але яскравіше
- Методи і функції - синій (зовнішні, з пакетів/додатків - трохи яскравіші)
- Поля і властивості типів - зелений
Після перенесення в різні IDE вийшло приблизно наступне (так-так, я знаю першу реакцію - «що за кислятина»:-) ):
- Swift (Xcode)
У Xcode проблеми з інтерфейсами (в плані поділу від класів), вони вважаються за reference type і теж відображаються жовтим.
- Kotlin (Android Studio) (можна порівняти з прикладом вище - darkce)
У котлині існують різного роду кваліфаєри і мітки, для них теж є окремий колір
- Java (Android Studio)
- C# (Visual Studio)
У шарпі є неймспейси, для них - окремий колір. Ну а ще студія засмучує тим, що немає чіткого семантичного поділу в налаштуваннях (поле класу, метод тощо). У цьому мені допомагає ReSharper.
З додаткових бонусів - зір дозволяє відразу знаходити дивацтва вже на рівні колірного сприйняття навіть не прочитавши текст. Якщо я знаю, що повинен бути інтерфейс, то я побачу, що не вистачає помаранчевого кольору там, де я це очікую (наприклад, може бути написаний тип, відповідний інтерфейсу і все ніби як валідно, але ні).
Власне і все:)
Для бажаючих прикладаю схеми кольорів
Android Studio
Xcode
Visual Studio 2017
Гарного і красивого коду всім!