Как программист, работающий с разными языками и на разных платформах, я столкнулась в определенный момент времени с одной неожиданной проблемой: для проведения ревью или же написания собственного кода, приходилось тратить достаточно много времени на переключение между IDE и языками. Возникла потребность в каком нибудь инструменте, который помог бы мне делать это эффективнее и без потери концентрации. И внезапно мне на помощь пришел цвет. И я хочу поделиться этим маленьким лайфхаком.

Во всех IDE есть такая замечательная функция, как подсветка синтаксиса. Все бы хорошо, но везде она разная и даже внутри одной среды разработки может ��тличаться для разных языков. Но главное то, что подсветка не помогает достаточно часто (лично мне) различать структурные компоненты, такие как методы, переменные, классы, структуры… Они, как правило, отрисовываются одним цветом и я решила подобрать свою цветовую схему, которая бы выполняла функцию дифференциации не только синтаксических элементов (как то ключевые слова), но и семантических (классы, структуры, методы и функции).

Пример цветовой схемы Darkula в Android Studio
Подсвечены в принципе только ключевые слова и константы


Начало концепции положила цветовая схема Ciapre для Xcode. Она изначально (да и стоит признать, сама IDE) предоставляет такое семантическое деление именно цветом. Flat цвета не режут глаза и достаточно сильно отличаются для разных типов семантических элементов.
В результате получилось примерно следующее разделение:

  • Ключевые слова — красный
  • Reference Types (классы) — желтый
  • Интерфейсы — оранжевый
  • Value Types — фиолетовый
  • Константные значения — тоже фиолетовый, но поярче
  • Методы и функции — синий (внешние, из пакетов/модулей — чуть ярче)
  • Поля и свойства типов — зеленый

После переноса в разные IDE получилось примерно следующее (да-да, я знаю первую реакцию — «что за кислятина» :-) ):

  • Swift (Xcode)
    В Xcode проблемы с интерфейсами (в плане разделения от классов), они считаются за reference type и тоже отображаются желтым.

  • Kotlin (Android Studio) (можно сравнить с примером выше — darkula)
    В котлине существуют разного рода квалифаеры и метки, для них тоже есть отдельный цвет

  • Java (Android Studio)

  • C# (Visual Studio)
    В шарпе есть неймспейсы, для них — отдельный цвет. Ну а еще студия огорчает тем, что нет четкого семантического разделения в настройках (поле класса, метод и т.п.). В этом мне помогает ReSharper.


Из дополнительных бонусов — зрение позволяет сразу находить странности уже на уровне цветового восприятия даже не прочитав текст. Если я знаю, что должен быть интерфейс, то я увижу, что не хватает оранжевого цвета там, где я это ожидаю (например, может быть написан тип, соответствующий интерфейсу и все вроде как валидно, но нет).

Собственно и все :)

Для желающих прикладываю цветовые схемы

Хорошего и красивого кода всем!