Никита Поляков
👋 Привет Пол (и все, кто любит чистый код)
Хочу обсудить с вами решение, которое, на мой взгляд, облегчает восприятие кода и улучшает его читаемость.
Дядюшка Боб в своих книгах неоднократно критикует такие подходы к именованию классов, как использование префикса I для интерфейсов и постфикса Impl для их реализаций:
Префикс I, столь распространенный в старом коде, в лучшем случае отвлекает, а в худшем — передает лишнюю информацию.
От префикса I я отказался довольно быстро, но отказаться от постфикса Impl, честно говоря, было куда труднее.
Лишь спустя время, когда я настроил цветовую схему в IntelliJ IDEA, я полностью перешел на более лаконичный подход без "синтаксических костылей".
Настройка цветовой схемы стала для меня must-have в разработке по следующим причинам:
01. Легкость восприятия кода
Используя цвета для разных типов классов, я сразу визуально понимаю, какой тип объекта передо мной. Это особенно удобно в больших проектах, где легко потеряться в многочисленных классах и интерфейсах. Цвета моментально привлекают внимание и позволяют "считывать" структуру кода без необходимости изучать его подробности.
02. Отказ от синтаксического сахара
Как мы уже обсудили ранее, префиксы I & Impl — это по сути избыточная информация, которая засоряет код. В идеале, имя класса должно быть самоочевидным. Но, будем честны, отличать интерфейсы, абстрактные классы и их реализации — это очень удобно. И вот тут как раз цвета приходят на помощь в виде компромиссного решения.
*️⃣ Дополнительное преимущество:
Если у вас больше нет возможности использовать I & Impl, это предотвращает возникновение таких имен, как Service & ServiceImpl. Вместо этого вы столкнетесь с ситуацией, где интерфейс и его реализация имеют одинаковые имена — например, Service & Service.
Такой подход еще раз напоминает про ответственность (Single Responsibility) классов. Благодаря этому вы назовете свои классы более точно или даже решите отказаться от избыточного интерфейса, задавшись вопросами:
— Правильно ли мы называем наши классы?
— Может быть интерфейс заслуживает более абстрактного названия, а реализация — более конкретного?
В следующем посте расскажу, как цветовая схема настроена у меня.
2 · 351 ·