У меня есть 2 вызова API для реализации, давайте назовем их «ShouldDoSomething» и «DoSomething». Первый - это проверка того, нужно ли предпринимать какое-то конкретное действие, а другой действительно выполняет это действие. Естественно, выполнение действия необходимо или допустимо только в том случае, если тест возвращает значение true. Есть случаи, когда тест необходим без фактического выполнения действия, поэтому необходимы оба.
Должен ли вызов действия внутренне запускать тест и становиться неактивным, если он не нужен, или реализация должна предполагать, что он будет вызываться только в случае, если тест уже вернул true? Кажется, проще и безопаснее проверить допущения, но тогда у вызова 'action' есть 3 возможных состояния возврата вместо двух (успех, сбой и не требуется). Другой подход заключается в том, чтобы сделать тест утверждением и прервать его, если действие было вызвано без необходимости. (это в C, поэтому исключения не очень хорошая идея)
Но все сводится к выбору - более простые вызовы API или меньшее количество вызовов API?