Я думал о создании платформы Java, которая позволила бы программистам указывать инварианты (пред - и постусловия) в интерфейсах. Цель состояла бы в том, чтобы сделать код более устойчивым и сократить количество модульных тестов, которые должны будут быть записаны для различных реализаций того же интерфейса.
Я предусматриваю создавать некоторый способ аннотировать методы инвариантами, которые также записал бы программист. НАПРИМЕР.
interface Sort {
int [] sort(int [] nums);
}
был бы украшен аннотацией, чтобы гарантировать, чтобы любые реализации возвратили отсортированный список. Эта аннотация была бы связана с модульным тестом, который мог быть выполнен во время компиляции против любой реализации.
Действительно ли это - сумасшедшая идея, или это было бы полезно для более широкого сообщества программирования?