Код: Выделить всё
throw new PotatoNotFound("no such potato: %s".formatted(potato));
Это вдвойне плохо, поскольку эти интерполяции засоряют наш мониторинг: вместо того, чтобы иметь одну строку в (скажем) сотах для всех наших необнаруженных потребностей картофеля, каждая интерполяция приводит к созданию своей особой строки в таблице, тем самым разрушая все.
Я разрабатываю API вместо этого это выглядит так
Код: Выделить всё
throw giveUp()
.withPotato(potato)
.with("shape", potatoShape)
.andFail("unrecognised potato shape")
Однако это работает только в том случае, если вы избегаете использования String.formatted и передаете строковые литералы в функцию andFail.
Используя это в качестве основы.
Если не считать использования перечислений (номера ошибок НЕ являются тем, как выглядят хорошие вещи), есть ли способ обеспечить/запросить, чтобы Java-методу передается что-то не совсем похожее на константу времени компиляции моему методу? Возможно, есть какая-то аннотация (я нашел противоположное: @MagicConstant)
Если Java не может этого сделать, а Kotlin может, я буду рад услышать решение Kotlin.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ava-method
Мобильная версия