•••

Все вокруг в восторге от продуктов JetBrains, а меня вот близкое столкновение с ними всякий раз глубоко озадачивает. Сегодняшний пример — Teamcity Kotlin DSL.

Это Kotlin, со всеми фирменными котлинскими приколами. Язык, в котором есть два вида строковых литералов: с эскейпами и без тоже с эскейпами, но абсолютно упоронскими и не отражёнными в документации. Вопрос знатокам: если, чтобы получилось %, надо догадаться написать %% (именно догадаться, в документации этого нет), то что надо написать, чтобы получилось $?1.

Так вот, мало того, что оно Kotlin, так ещё и с фантазией сделано. Например, проект — сущность для организации работы в Teamcity центральная — логично задаётся классом Project. В каковом классе есть функция subProject, добавляющая подпроект — тоже абсолютно логично. А ещё там же есть функция subProjects, которая задаёт список подпроектов — исчёрпывающий, конечно. То есть, если случайно вместо subProject написать subProjects, оно затрёт все предыдущие подпроекты! Разумеется, проморгать такое на code review проще простого, и замечают это обычно уже после того, как патч вмёржился, конфигурация собралась и применилась, и ворох подпроектов куда-то испарился…

Никак у меня с продуктами JetBrains не складывается.

/posts/2024/jetbrains/featured_hu7574865294308526318.jpeg
by shedevrum.ai

  1. Разумеется, ${'$'}, какие ещё могут быть варианты?!2 ↩︎

  2. Я не мог не позубоскалить про это в рабочем чате. Через некоторое время пишет коллега из другого офиса: «Использовал это твоё сообщение, чтобы познакомиться с ребятами, которые сидят рядом со мной в офисе и пишут на котлине. Спасибо! Кстати, никто из них правильно не ответил». ↩︎