Я не уверен, как составить вопрос, но мне интересно узнать, что вы, ребята, думаете о следующих ситуациях и какую из них вы бы предпочли.
Мы работаем над клиентом.серверное приложение с winforms.И у нас есть элемент управления, который автоматически вычисляет некоторые поля при заполнении другого поля.Таким образом, у нас есть поле валюты, которое при заполнении пользователем будет определять автоматическое заполнение другого поля, может быть, больше полей
Когда пользователь заполняет поле валюты, объект Валюта будет извлекаться из кэша на основе строки, введенной пользователем.Если введенная валюта не найдена в кэше, объект кэша возвращает нулевую ссылку.Далее при запросе прикладного уровня вычислить другие поля на основе валюты, учитывая нулевую валюту, будет возвращено определенное нулевое поле.Таким образом, неявное поведение по умолчанию - очистить все поля.Что является ожидаемым поведением.Просто чтобы было более понятно, когда пользователь вводит «недоступную валюту», он, конечно, получает уведомление, но также следует очистить поля, которые зависят от введенной валюты.Это делается путем установки определенных значений элемента управления равными нулю.
То, что я бы назвал явной реализацией, состояло бы в том, чтобы проверить, что объект Currency является нулевым, и в этом случае зависимые поля очищаются явно.* Я думаю, что последняя версия более понятна, менее подвержена ошибкам и более тестируема.Но это подразумевает форму избыточности.Предыдущая версия не так ясна и подразумевает определенное поведение на уровне приложений, которое не выражено в тестах.Может быть, в тестах нижнего уровня, но когда возникает необходимость изменить нижние уровни, чтобы при нулевой валюте было возвращено что-то еще, я не думаю, что тест, который говорит просто, что без мотивации будет препятствием длявведение ошибки в верхних слоях.
Что вы, ребята, думаете?