In this course,
First, you'll learn the concept of failing early and how to effectively use a variety of guard clauses in both methods and constructors.
Next, you'll explore a set of very popular helper libraries that will make your defensive code more concise and elegant. Then, you'll see how important it is to return predictable and understandable values from your methods and you'll learn how to choose and implement them.
Finally, you'll discover a variety of defensive techniques that are often overlooked, yet they greatly contribute to the overall software quality. When you're finished with this course, you'll have the necessary skills to write code that is more reliable and easier to maintain.