221просмотров
18.4%от подписчиков
27 марта 2026 г.
📷 ФотоScore: 243
Цветовая палитра классов в PlantUML Лев Лейман, ведущий бэкенд-разработчик, продолжает делитсья лайфхаками по работе со схемами в PlantUML 😍 Сегодня поговорим о приёмах, которые помогут наглядно показать по схеме, что изменится в коде. Передаём слово Льву: «Снова немного про схемы классов в PlantUML. На этот раз поиграемся с цветами. Прежде чем браться за разработку более-менее крупной фичи, мы предварительно планируем изменения в кодовой базе. Это помогает декомпозировать задачи и точнее оценивать их, но сейчас не об этом. В схеме описывается, что и как меняется, связи между классами. Для большей наглядности и удобства мы помечаем вид изменения у класса через шаблоны. Пример: set namespaceSeparator /
!pragma useIntermediatePackages false class /Sberhealth/Application/OrderService<<New>>
class /Sberhealth/Application/UserService<<Mod>>
class /Sberhealth/Application/ExternalUserService<<Del>>
class /Sberhealth/Application/UserDto<<Gen>> Эти отметки (New, Mod, Del, Gen) помогают понять, будет ли класс добавлен, изменён, удалён или сгенерирован в ходе разработки (да, часть кода иногда может быть сгенерирована, например, по схеме OpenAPI, и это полезно отразить). Сами по себе они теряются. Как сделать их заметнее? Добавить им цвет 🤔 Цвет можно настроить для каждого шаблона, например, зелёным выделить то, что отмечено как New, и вот схема обретает совсем другой вид. set namespaceSeparator /
!pragma useIntermediatePackages false skinparam class {
BorderColor<<New>> Green
BorderThickness<<New>> 2
BorderColor<<Mod>> DodgerBlue
BorderThickness<<Mod>> 2
BorderColor<<Del>> Red
BorderThickness<<Del>> 2
BorderColor<<Gen>> Violet
BorderThickness<<Gen>> 2
} class /Sberhealth/Application/OrderService<<New>>
class /Sberhealth/Application/UserService<<Mod>>
class /Sberhealth/Application/ExternalUserService<<Del>>
class /Sberhealth/Application/UserDto<<Gen>> Теперь схема легко читается даже в метре от монитора и понятен общий масштаб будущих изменений — как много нового появится или сколько же всего будет удалено. Такую цветовую схему мы используем у себя. Но можно пойти дальше и добавить, ну скажем, градиент... 🤪 set namespaceSeparator /
!pragma useIntermediatePackages false skinparam class {
BorderColor<<New>> Green
BorderThickness<<New>> 2
BackgroundColor<<New>> LightGreen/Green
BorderColor<<Mod>> DodgerBlue
BorderThickness<<Mod>> 2
BackgroundColor<<Mod>> LightBlue-Blue
BorderColor<<Del>> Red
BorderThickness<<Del>> 2
BackgroundColor<<Del>> Pink\Red
BorderColor<<Gen>> Violet
BorderThickness<<Gen>> 2
BackgroundColor<<Gen>> Gold|Violet
} class /Sberhealth/Application/OrderService<<New>>
class /Sberhealth/Application/UserService<<Mod>>
class /Sberhealth/Application/ExternalUserService<<Del>>
class /Sberhealth/Application/UserDto<<Gen>> Хорошо, что текст не может мигать или двигаться 😁 трюк выполнен профессионалами, не повторяйте этого
С этим нужно быть осторожным, в порыве творчества текст может оказаться нечитаемым, это как-никак схема. Да и на дворе уже не нулевые. Вот ещё один полезный приём работы с PlantUML в копилку. Используйте, и ваша схема останется простой, но при этом по ней сразу будет виден масштаб изменений. Пишите в комментариях который час.»