Иногда дозорные ответы на самом деле не возможны; возможно, диапазон функции совпадает с кодоменом (диапазон). Это не относится к высоте, если только вы не допустите отрицательные высоты (возможно, в будущем появятся подводные города). Например, может быть, мы говорим о пересечении между строками (не очень хороший пример, так как с плавающей запятой имеют несколько встроенных часовых, например, + INF и NaN) или точный целочисленный коэффициент (без округления, это не гарантирует существовать ... например, 7 и 3 ... здесь остаток после деления можно рассматривать как свойство часового или как "точное целое отношение существует"). В более общем смысле любой надежный страж может быть тривиально использован для создания механизма, основанного на свойствах.
Исходя из этого, я бы рекомендовал избегать часовых, где это возможно и имеет смысл. Я считаю, что они являются внутренней деталью реализации модуля и должны быть заключены в интерфейс, скрывающий информацию.