This chapter will introduce you to code contracts. This is a very powerful technology and one that will enable you to secure your code from unnecessary errors. This is especially true when you are writing a class that is shared between several developers. Code contracts allow you to inspect and handle data passed to your method under contract. If the contract fails its validation, you can take decisive action within your method to handle this eventuality. This chapter will cover the following recipes:
Assert
and Assume
methodsForAll
methodValueAtReturn
methodResult
methodYou might be wondering what code contracts are exactly. To explain it in layman's terms, a code contract is a definition that you add to your methods. It tells the compilers that the method under contract will always adhere to specific conditions. An example of this is that the method will never return a null value to the calling code or that the method will always expect a parameter greater than a specific value. If any of these conditions are not met, your code can emit an exception, and the developer integrating with your class will be prompted to refine their calling code. On the flip side, when a developer calls your class, they can be sure that the method under contract will always behave in a specific way and never deviate from it.
Code contracts really stand out when working within a team of developers, but implementing this technology in a single-developer solution will only improve your code.