Techniques for Defensive ProgrammingEmploy a Good Coding Style and Sound DesignDon’t Code in a HurryTrust No OneWrite Code for Clarity, Not BrevityDon’t Let Anyone Tinker with Stuff They Shouldn’tCompile with All Warnings Switched OnUse Static Analysis ToolsUse Safe Data StructuresCheck Every Return ValueHandle Memory (and Other Precious Resources) CarefullyInitialize All Variables at Their Points of DeclarationDeclare Variables as Late as PossibleUse Standard Language FacilitiesUse a Good Diagnostic Logging FacilityCast CarefullyThe Fine PrintConstraintsWhat to ConstrainRemoving Constraints