Я поклонник стратегии "fail early" и хочу проверить, что параметры params имеют правильные значения, например. В Java я бы использовал нечто вроде Guava:
checkArgument(count > 0, "must be positive: %s", count);
Кодовые контракты по-прежнему являются добавлением/не включенным в стандартную установку Visual Studio, но они позволяют вам выражать предварительные и пост-условия и объектных инвариантов.
Доступны различные варианты для обеспечения исполнения контрактов как проверки времени компиляции или времени выполнения (или обоих).
Ответ 4
Посмотрите CuttingEdge.Conditions. Это позволяет вам свободно писать свои предпосылки следующим образом: