клиентский код должен оставаться чистым, состоять как можно больше из кода реализации алгоритма и как можно меньше из кода обслуживающего эту реализацию.
Клиентский код ничего не должен знать о том, как ты хочешь, например, оповещать пользователя об исключительный ситуациях.
Сейчас конечно попробую еще раз