...
This chapter contains guidelines for defensive programming. Defensive programming is carefully guarded programming that helps you to construct reliable software by designing each component to protect itself as much as possible, for example, by checking that undocumented assumptions remain valid [Goodliffe 2006]. These guidelines address areas of the Java language that can help to constrain the effect of an error or help to recover from an error.
...
Program understandability is the ease with which the program can be understood—that is, the ability to determine what a program does and how it works by reading its source code and accompanying documentation [Grubb 2013]. Another term used to describe this property of source code is readability. Understandable code is easier to maintain because software maintainers are less likely to introduce defects into code that is clear and comprehensible. Understandability helps in manual analysis of source code because it allows the auditor to more easily spot defects and vulnerabilities.
...