Если ToggleVisibility(IEnumerable<Shape>)
- частный метод (таким образом, SomeMethod()
должен быть в той же библиотеке), то я обязательно включу проверку только один раз в сборке Release. Является ли проверка одним способом или другим, зависит от того, что имеет смысл для того, что происходит. Если ожидается, что коллекция не будет пуста при правильном выполнении, то, возможно, проверка не требуется. Если ToggleVisibility(IEnumerable<Shape>)
вызывается из десяти разных мест, и любой из них может иметь пустую коллекцию, то я бы определенно избавил вызывающего от обязанности выполнять проверку каждый раз и просто вставлял ее внутри самого метода.
Если ToggleVisibility(IEnumerable<Shape>)
является частью общедоступного API, то он определенно должен сделать все необходимые проверки параметров, поскольку пользователи API могут что-либо сделать, и все параметры должны быть проверены в любое время. Если в документации для метода указано, что пустые коллекции будут игнорироваться, то SomeMethod()
не нужно беспокоиться об этом, очевидно. В противном случае SomeMethod()
должен сделать все возможное, чтобы убедиться, что сбор, который он передает, действителен, даже если это означает, что выполняются избыточные проверки.