How often do you have to defend from nulls, zeros, surprising cases hitting switch instruction, impossible else branches, and so on? Is your life a struggle with issues caused by unexpected data or invalid system state? In this course, Advanced Defensive Programming Techniques, you'll learn how to defend by means of design, so that almost all explicit defensive code can be happily removed. First, you'll discover how to build validation. Next, you'll explore how exactly to design a public interface. Finally, you'll cover how to unify error flows, so nothing unpredictable can take you by surprise. By the end of this course, you'll have the necessary knowledge to efficiently develop your own defensive design practice.
Course Overview Hi everyone, my name is Zoran Horvat, and welcome to my course, Advanced Defensive Programming Techniques. I'm a principal consultant at Coding Helmet and an independent trainer and coach. Throughout my programming career, I've been defending in code with all my wits and powers, until I figured it out. In this course, I will show you a better way. I will show you defensive designs in which there is nothing left to defend from. Some of the major topics that we'll cover include building object graphs which are validated out of the box, designing public interface which is defended out of the box, and unifying error flows so that nothing unpredicted can ever jump out. By the end of this course, you will know the same secret I know already. If you have to defend, you have already lost. Before beginning the course, you should be familiar with traditional defensive coding techniques. From here, you should feel comfortable diving into rich domain model design with courses on object-oriented design, functional design, or SOLID principles, for example. I hope you will join me on this journey to learn defensive design with the Advanced Defensive Programming Techniques course at Pluralsight.