What is a practical usage of Code Contracts in .NET 4.0?

后端 未结 4 1772
生来不讨喜
生来不讨喜 2021-02-03 20:01

In order to fully understand and take advantage of the new features and enhancements provided with the coming of the new .NET Framework 4.0, I would like to get an example of

4条回答
  •  情歌与酒
    2021-02-03 20:18

    There is a freely available chapter about code contracts in the upcoming book C# in Depth, second edition. By some guy named Jon Skeet, some of you may be familiar with him :)

    As for practical usage. You can use them anywhere in your code, but especially if you're developing framework / API type libraries that lots of people will be using, I expect them to come in quite handy. Static verification of your code saves a lot of time compared to finding out at runtime that you didn't handle some edge case.

    You may document your method usage all you like, but will people actually read that documentation? Is it allowed to have string parameter x in method y be null, or not? Code contracts can provide that information, to take the guesswork out of the equation.

    Here's an example of just such a case:

    static int CountWhitespace(string text)
    {
        Contract.Requires(text != null, "text");
        return text.Count(char.IsWhiteSpace);
    }
    

    The verification will complain if anyone tried to pass a string to CountWhitespace that might be null. In addition, it will throw an ArgumentNullException at runtime.

    I've only recently converted my private class library to .NET 4.0, but I plan to add code contracts to it real soon.

提交回复
热议问题