假设您正在使用(PHP,但没关系)库,该库有时会被其他开发人员使用。该库包含大量单元测试,以确保其按预期工作,还对一些边缘情况进行了测试,例如在明显不好的参数上引发异常(例如,传递期望标量值的数组等)。应该在牺牲性能的同时编写更多的单元测试并在代码中进行更多的值检查,以确保从不传递无效的值并引发异常,同时应停止并记录允许使用无意义的值,但不应这样做。不被通过?
例如,您编码一个URL类,然后可以选择设置包含无效字符或长度错误等的主机值。是否应该允许它并希望其他开发人员永远不会传递错误的值,或者您应该编写检查并牺牲掉表现是诚信吗?
只有一种意见...我认为除非您控制两端,否则您将无法信任API用户。如果不是唯一要使用它的人,则需要确保仅将“ OK值”传递给API的第一层。为防止性能问题,您可以考虑使用相反的方法(如果它可以满足解决方案的需求和实现),而不是搜索所有错误的情况和输入,可以尝试检查该值是否正确,如果不正确,则抛出异常(即,可以使用REGEX角色检查主机值以确保它是正确的模式,否则将引发异常)。
有几个标准/问题可以帮助做出该决定:
谁会在现在和将来使用您的服务?考虑公司扩张甚至购买的场景。
谁将受到“不良输入”案的影响?它只会影响导致它的单个操作,还是可能影响其他将来的操作甚至其他用户(例如,导致系统崩溃,将无效数据插入数据库,文件或全局内存等)。
您可以信任将要使用您的服务及其数据的人吗?他是从可能已损坏或无效的其他来源获取数据吗?
验证检查的费用是多少?是否需要花很多钱才能完成其余工作(从性能角度考虑),如果需要,可以更有效地编写吗?
这些问题的答案可以帮助您为特定情况找到正确的解决方案。我通常会采用防御编程方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句