Многие мои функции имеют целую нагрузку кода проверки чуть ниже деклараций:
if ( ! (start < end) ) {
throw new IllegalStateException( "Start must be before end." );
}
Я хотел бы точно указать допустимые диапазоны определенных входных данных - например, A > B, C = > 1 или str_d.length() > 0.
Учитывая, что некоторые из моих функций имеют довольно много аргументов, которые должны быть проверены, я могу закончить писать много котельной пластины только для проверки предварительных условий. Я пишу библиотеку, которая, в основном, будет использоваться нетехническими разработчиками, мы обнаружили, что проверка правильности входных данных - лучший способ помочь нашим пользователям правильно управлять нашим API. Чем скорее мы поднимем ошибку, тем меньше будет работать наша клиентка.
Есть ли более элегантный метод для определения предварительных условий, пост-условий (и, возможно, инвариантных условий) в моих методах.
Коллега рассказал мне об особенностях языка программирования Эйфеля, который позволяет описать предварительные/пост-инвариантные условия очень естественным образом, не повторяя много шаблонов. Есть ли дополнение к языку Java, которое позволит мне использовать некоторые из этих магии?