Подтвердить что ты не робот

Когда следует использовать кодовые контракты, которые поставляются вместе с С# 4.0?

Я обсуждал вопрос о SO, который был о новых функциях С# 4.0, а ответ jon skeet имел функцию Code Contracts на С# 4.0. Но я действительно не могу понять, когда их использовать.. Любое предложение...

4b9b3361

Ответ 1

По возможности. Например, в любом месте, где вы бы использовали предложение охраны в начале метода типа

public void Write(TextWriter tw, object o) {
    if(tw == null) {
        throw new ArgumentNullException("tw");
    }
    if(o == null) {
        throw new ArgumentNullException("o");
    }
    tw.WriteLine(o.ToString());
}

вместо этого вы должны использовать

public void Write(TextWriter tw, object o) {
    Contract.Requires(tw != null);
    Contract.Requires(o != null);
    tw.WriteLine(o.ToString());
}

Что красиво в Contract, так это то, что они становятся общедоступными и могут быть включены в документацию без дополнительной работы с вашей стороны, где в качестве оговорки охранника не были публичными и могут быть помещены в документацию с некоторым тяжелым подъемом. Поэтому с Contract вы можете более четко выражать требования и promises в своем коде.

Ответ 2

что действительно красиво с контрактами, так это то, что вам не нужно жестко подключать эти уродливые строки имен аргументов...

if(tw == null) throw new ArgumentNullException("tw");