实用程序设计建议,简单但功能强大的技术,用于安全,可维护的软件
我会简短而甜美的
我们将介绍两种非常简单实用的防御技术,您可以立即将其应用于您的项目。
作为专业的开发人员,您很可能已经在应用这些技术,因此您可能想把这一技术排除在外。
但是,对于尚未达到专业水平的任何人,这些技术都会提高您的质量并使您的代码更安全。
如果您以前从未听说过防御性编码,那么该差不多了。 这是要点。
防御性编码使我们的软件即使输入错误也能以正确的方式运行。
好的,让我们研究一下即使您输入了错误的软件,也可以如何使其表现良好。
这些单线是防御性编码的绝对基石之一。 它们位于方法的顶部,以确保仅在提供有效输入时方法才继续执行。
它们是前提条件检查。 这是一个非常简单的示例,但仍然是一个真实的示例。
> simple guard statement
我们只是在检查呼叫者是否向我们提供了非空值或空值。 如果继续使用这些值可能会导致意外的结果,通常我们会这样做。
当您的方法开始使用大量参数或一个参数需要多个保护子句时,您需要重构为另一种保护子句方法。 这种重构可能涉及创建一个包含所有所需属性的对象以及IsValid()方法。 在这里,IsValid()方法正在检查其状态,以验证每个属性是否都具有有效值。
> refactored guard statement
当您发现自己在多个方法中重复相同的保护子句时,此重构技术特别有用。 例如,规范对象使您可以在一处捕获业务规则。
您对断言非常熟悉。 这些语句在单元测试结束时。 在防御性编码中,它们不仅限于测试。
您可能会调用其他类方法,甚至调用外部库提供的方法。 在这种情况下,我们想在继续执行方法之前检查一下关于这些方法执行或返回的假设是否正确。
> execution assertion
我们预计会出现错误。 在调用数据库的Save()方法后添加anif,我们可以有效地断言发生的事情并采取相应的措施。 没什么好奇怪的
Nicklas Millard在丹麦的四大咨询公司之一中担任高级技术顾问。 他主要担任客户项目的首席开发人员和解决方案架构师。
他一直在为商业客户和政府机构开发软件,例如国防部,教育部,丹麦环境与食品部,国家警察,丹麦劳动力市场和招聘局以及Ørsted。
在LinkedIn上连接
(本文翻译自Nicklas Millard的文章《2 Defensive Coding Techniques You Should Use Today》,参考:https://medium.com/swlh/2-defensive-coding-techniques-you-should-use-today-4225cacc1c29)