In the previous recipe, we learned how to use static code analyzers to prevent coding errors at the early stages of development. Another powerful tool for error prevention is programming by contract.
Programming by contract is a practice in which developers explicitly define contracts or expectations for input values of a function or module, its results, and intermediate states. While intermediate states depend on implementation, the contracts for the input and output values can be defined as part of the public interface. These expectations are called preconditions and preconditions, respectively, and help avoid programming errors caused by vaguely defined interfaces.
In this recipe, we will learn how to define preconditions and postconditions in our C++ code.