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