防御性编程几大基本原则
当开发人员遇到意外的错误无法修复时,他们会“添加一些防御性代码”来使代码更安全,更容易找到问题所在。有时候,仅仅这样做就能解决问题。他们会加强数据验证——确保检查输入和输出字段以及返回值。审查并改进错误处理——也许在“不可能”的情况周围添加一些检查。增加一些有用的日志记录和诊断功能。换句话说,这些本应该从一开始就存在的代码。 防御性编程的整个目的是为了防范你意想不到的错误。 ——Steve McConnell,《代码大全》 防御性编程的几个基本原则在Steve McConnell经典著作《代码大全》中有详细解释: 保护你的代码免受“外部”传入的无效数据影响,无论你认为“外部”是指什么地方。这里指来自外部系统、用户、文件或模块/组件之外的任何数据。建立“壁垒”、“安全区域”或“信任边界”——边界之外的一切都是危险的,边界之内的一切都是安全的。在壁垒代码中,验证所有输入数据:检查所有输入参数的正确类型、长度和取值范围。再次检查限制和范围。 在检查完坏数据后,决定如何处理它。防御性编程并不意味着吞没错误或隐藏错误。它是关于在健壮性(如果遇到可处理的问题则继续运行)和正确性(永远不返回错误结果...



