Это известно как Проектирование по контракту .
Основная идея Design by Contract заключается в том, что объекты имеют контракты между ними, и если вызывающая сторона не выполняет контракт, получатель должен потерпеть неудачу с исключением, а не пытаться угадать намерение вызывающей стороны. В конце концов, это приводит к более стабильному программному обеспечению (в частности, когда над проектом пишут несколько человек, с тех пор контракт также становится контрактом между программистами).
PS: Важным вопросом проектирования по контракту, который часто забывают, является следующее. Клиент должен знать, выполняет ли он договор или нет. Так, например, если контрактом стека является то, что клиент может pop
только тогда, когда стек не пуст, должен быть методом isEmpty
, чтобы проверить это, и клиенты должны использовать этот метод перед вызовом pop
. Вот почему код, который использует Design by Contract, перегружен исключениями, которые, тем не менее, никогда не генерируются.