在实施API时,是否应该信任其他开发人员?

时间:2014-06-01 14:49:21

标签: php unit-testing testing documentation

让我们假设您在某个时候使用其他开发人员使用的(PHP,但无关紧要)库。该库充满了单元测试以确保它按预期工作,一些边缘情况也被测试,例如在明显错误的参数上抛出异常(比如传递一个标量值在预期的数组等)。是否应该编写更多单元测试并在代码中构建更多值检查,以确保永远不会传递无效值并抛出异常,同时牺牲性能或应该停止并记录允许非感知值,但不应该通过了?

例如,您编写了一个URL类,您可以选择允许设置包含无效字符或长度不正确等的主机值。如果您允许它并希望其他开发人员永远不会传递错误的值或者您应该写检查并牺牲表现以支持诚信?

1 个答案:

答案 0 :(得分:0)

只有意见......我认为除非您控制两端,否则您无法信任API用户。 如果您不是唯一一个将要使用它的人,那么您需要确保只有" OK值"将通过API的第一层。 为了防止性能问题,您可以考虑相反的方法(如果它适用于解决方案需求和实现),而不是搜索所有错误的情况和输入,您可以尝试检查值是否正常,如果不是抛出异常(即,可以使用REGEX角色检查主机值,以确保它是正确的模式,否则将抛出异常)。

有几个标准\问题可以帮助做出这个决定:

现在和将来,谁将使用您的服务?考虑公司扩张甚至购买等情况。

谁会受到“错误输入”的影响?#34;案件?它是仅影响导致它的单个操作还是影响其他未来操作甚至其他用户(例如导致系统崩溃,将无效数据插入数据库,文件或全局内存等)。

您能相信那些将使用您的服务及其数据的人吗?他是从另一个可能已损坏或无效的来源获取数据吗?

验证检查费用是多少?对于需要完成的其他工作(性能明智)是否代价昂贵?如果是这样,是否可以更有效地编写?

这些问题的答案有助于为特定方案找到正确的解决方案。 我通常采用Defensive programming方法。