•••
Все вокруг в восторге от продуктов JetBrains, а меня вот близкое столкновение с ними всякий раз глубоко озадачивает. Сегодняшний пример — Teamcity Kotlin DSL.
Это Kotlin, со всеми фирменными котлинскими приколами. Язык, в котором есть два вида строковых литералов: с эскейпами и без тоже с эскейпами, но абсолютно упоронскими и не отражёнными в документации. Вопрос знатокам: если, чтобы получилось %
, надо догадаться написать %%
(именно догадаться, в документации этого нет), то что надо написать, чтобы получилось $
?1.
Так вот, мало того, что оно Kotlin, так ещё и с фантазией сделано. Например, проект — сущность для организации работы в Teamcity центральная — логично задаётся классом Project
. В каковом классе есть функция subProject, добавляющая подпроект — тоже абсолютно логично. А ещё там же есть функция subProjects, которая задаёт список подпроектов — исчёрпывающий, конечно. То есть, если случайно вместо subProject
написать subProjects
, оно затрёт все предыдущие подпроекты! Разумеется, проморгать такое на code review проще простого, и замечают это обычно уже после того, как патч вмёржился, конфигурация собралась и применилась, и ворох подпроектов куда-то испарился…
Никак у меня с продуктами JetBrains не складывается.
-
Я не мог не позубоскалить про это в рабочем чате. Через некоторое время пишет коллега из другого офиса: «Использовал это твоё сообщение, чтобы познакомиться с ребятами, которые сидят рядом со мной в офисе и пишут на котлине. Спасибо! Кстати, никто из них правильно не ответил». ↩︎
Реакции
RUssian Reposter