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

用户名

假设您正在使用(PHP,但没关系)库,该库有时会被其他开发人员使用。该库包含大量单元测试,以确保其按预期工作,还对一些边缘情况进行了测试,例如在明显不好的参数上引发异常(例如,传递期望标量值的数组等)。应该在牺牲性能的同时编写更多的单元测试并在代码中进行更多的值检查,以确保从不传递无效的值并引发异常,同时应停止并记录允许使用无意义的值,但不应这样做。不被通过?

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

some_name

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

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

谁会在现在和将来使用您的服务?考虑公司扩张甚至购买的场景。

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

您可以信任将要使用您的服务及其数据的人吗?他是从可能已损坏或无效的其他来源获取数据吗?

验证检查的费用是多少?是否需要花很多钱才能完成其余工作(从性能角度考虑),如果需要,可以更有效地编写吗?

这些问题的答案可以帮助您为特定情况找到正确的解决方案。我通常会采用防御编程方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

monetdb的开发人员是否在其上测试了其他任何压缩算法?

来自分类Dev

iOS 8:“允许完全访问”是否允许开发人员从其他键盘访问击键?

来自分类Dev

Android App转让给其他开发人员

来自分类Dev

如何与其他开发人员共享信标

来自分类Dev

如何与其他开发人员共享信标

来自分类Dev

如何与其他开发人员共享Google API控制台

来自分类Dev

无法通过xcode安装其他开发人员的api文件

来自分类Dev

无法通过xcode安装其他开发人员的api文件

来自分类Dev

在iOS开发人员程序中使用其他名称作为开发人员名称

来自分类Dev

导入用于iOS推送通知的SSL证书是否会阻止其他开发人员从事该项目?

来自分类Dev

除了强迫开发人员使用ViewHolder模式之外,RecyclerView是否还有其他好处?

来自分类Dev

让开发人员和其他人参与游戏开发团队

来自分类Dev

C ++如何定义其他开发人员需要调用的常量函数顺序

来自分类Dev

签署由其他开发人员创建的iOS应用

来自分类Dev

在.net 4.0中使用codeContracts而不影响其他开发人员

来自分类Dev

开发人员环境-如何调用/使用其他微服务

来自分类Dev

正确管理类/类别库,以供其他git团队开发人员重用

来自分类Dev

与其他开发人员一起使用时,Github DETACHED HEAD错误

来自分类Dev

签署由其他开发人员创建的iOS应用

来自分类Dev

无法获取ankhsvn中其他开发人员添加的文件

来自分类Dev

在实现类别时如何防止开发人员添加-ObjC标志

来自分类Dev

我应该如何与使用Xcode的开发人员合作?

来自分类Dev

如何取消包含dll或其他二进制文件的其他开发人员的更改?

来自分类Dev

从一台Mac迁移到另一台Mac后,iOS开发人员是否还需要其他备份(钥匙串等)?

来自分类Dev

Firefox开发人员工具-悬停时是否突出显示元素?

来自分类Dev

安全移除USB会导致“ Windows无法停止您的设备,因为某个程序仍在使用它”-当您是开发人员而没有其他工作时

来自分类Dev

Appstore:当应用程序处于开发人员版本下时,我们可以提交其他版本更新吗?

来自分类Dev

如何检查是否在Android 4.0.3上针对API 15启用了开发人员选项

来自分类Dev

是否有针对 UWP 应用程序的开发人员的 API?

Related 相关文章

  1. 1

    monetdb的开发人员是否在其上测试了其他任何压缩算法?

  2. 2

    iOS 8:“允许完全访问”是否允许开发人员从其他键盘访问击键?

  3. 3

    Android App转让给其他开发人员

  4. 4

    如何与其他开发人员共享信标

  5. 5

    如何与其他开发人员共享信标

  6. 6

    如何与其他开发人员共享Google API控制台

  7. 7

    无法通过xcode安装其他开发人员的api文件

  8. 8

    无法通过xcode安装其他开发人员的api文件

  9. 9

    在iOS开发人员程序中使用其他名称作为开发人员名称

  10. 10

    导入用于iOS推送通知的SSL证书是否会阻止其他开发人员从事该项目?

  11. 11

    除了强迫开发人员使用ViewHolder模式之外,RecyclerView是否还有其他好处?

  12. 12

    让开发人员和其他人参与游戏开发团队

  13. 13

    C ++如何定义其他开发人员需要调用的常量函数顺序

  14. 14

    签署由其他开发人员创建的iOS应用

  15. 15

    在.net 4.0中使用codeContracts而不影响其他开发人员

  16. 16

    开发人员环境-如何调用/使用其他微服务

  17. 17

    正确管理类/类别库,以供其他git团队开发人员重用

  18. 18

    与其他开发人员一起使用时,Github DETACHED HEAD错误

  19. 19

    签署由其他开发人员创建的iOS应用

  20. 20

    无法获取ankhsvn中其他开发人员添加的文件

  21. 21

    在实现类别时如何防止开发人员添加-ObjC标志

  22. 22

    我应该如何与使用Xcode的开发人员合作?

  23. 23

    如何取消包含dll或其他二进制文件的其他开发人员的更改?

  24. 24

    从一台Mac迁移到另一台Mac后,iOS开发人员是否还需要其他备份(钥匙串等)?

  25. 25

    Firefox开发人员工具-悬停时是否突出显示元素?

  26. 26

    安全移除USB会导致“ Windows无法停止您的设备,因为某个程序仍在使用它”-当您是开发人员而没有其他工作时

  27. 27

    Appstore:当应用程序处于开发人员版本下时,我们可以提交其他版本更新吗?

  28. 28

    如何检查是否在Android 4.0.3上针对API 15启用了开发人员选项

  29. 29

    是否有针对 UWP 应用程序的开发人员的 API?

热门标签

归档