Я просто попытался использовать Контракты кода, и я не вижу реальных преимуществ перед if statement.
Рассмотрим следующее.
private static void BindClassesToInterfacesByConvention(string classesEndingWith
, string interfacesEndingwith) {
Contract.Requires<ArgumentNullexception>(
string.IsNullOrWhiteSpace(classesEndingWith)
, "classesEndingWith");
Contract.Requires<ArgumentNullException>(
string.IsNullOrWhitespace(interfacesEndingWith)
, "interfacesendingWith");
...
}
Я нахожу это более запутанным, чем просто используя if statement
private static void BindClassesToInterfacesByConvention(string classesEndingWith
, string interfacesEndingwith) {
if (string.IsNullOrWhiteSpace(classesEndingWith))
throw new ArgumentNullException("classesEndingWith");
if (string.IsNullOrWhitespace(interfacesEndingWith))
throw new ArgumentNullException("interfacesendingWith");
...
}
Контракты кода должны предупредить меня во время компиляции, что нарушен контракт. Таким образом, я ожидал получить сообщение об ошибке или предупреждение, когда написал следующее.
BindClassesToInterfacesByConvention(null, null);
И ничего не произошло, все составлено просто отлично, и не появилось ни сообщения об ошибке, ни предупреждения.
В этом сценарии я считаю, что лучше продолжить с it statement
. Или, возможно, это было несправедливое использование Code Contracts
?