Однако каждая функция класса может возвращать несколько объектов.Безопасно установить тип возвращаемого значения в качестве интерфейса?
Это хорошая практика и распространенная.Например, посмотрите, как был построен COM, он в значительной степени опирается на эту методологию.
Существуют ли подводные камни при тестировании модулем возвращаемого типа функции
Нет.
Кроме того, считается ли это плохим дизайном дляесть ли функции, которые нужно запустить, чтобы они преуспели?В этом примере Validate () должен быть запущен до того, как IsValid (), иначе IsValid () всегда будет возвращать false.
Это хорошо для работы с парадигмой объектно-ориентированного программирования, например, работас розетками.Обычно есть способ подключения, прежде чем вы можете отправлять и получать данные.
При этом, как правило, лучше сохранять меньше состояний, чем больше состояний, потому что таким образом легче доказать правильность вашей программы.Например, вы должны протестировать каждую функцию, которая зависит от этой функции, не одним способом, а двумя способами.Возможные состояния программы растут в геометрической прогрессии, если у вас много состояний.Взгляните на функциональное программирование , если вас интересует, почему состояние - это плохо.