Language agnostic 如何管理应用程序的外部依赖关系?

Language agnostic 如何管理应用程序的外部依赖关系?,language-agnostic,defensive-programming,robustness,external-dependencies,Language Agnostic,Defensive Programming,Robustness,External Dependencies,有许多类型的外部依赖关系。与外部应用程序、组件或服务接口(例如,Outlook发送电子邮件、TWAIN或WIA扫描、ActiveX对象和各种用途的Web服务等) 您的策略是什么,以确保您的应用程序是健壮的,并且即使在这些外部依赖项(由于无数原因)不可用时也可以运行 注意:您自己的源代码中包含的来自外部源的代码是另一种类型的外部依赖,但这不是我在这里主要关心的。我们的策略是,除非在特殊情况下,否则我们的软件可能不会。因此,我们的计划相当有防御性: 如果没有邮件连接,则邮件功能不可用 图形输出取决

有许多类型的外部依赖关系。与外部应用程序、组件或服务接口(例如,Outlook发送电子邮件、TWAIN或WIA扫描、ActiveX对象和各种用途的Web服务等)

您的策略是什么,以确保您的应用程序是健壮的,并且即使在这些外部依赖项(由于无数原因)不可用时也可以运行


注意:您自己的源代码中包含的来自外部源的代码是另一种类型的外部依赖,但这不是我在这里主要关心的。

我们的策略是,除非在特殊情况下,否则我们的软件可能不会。因此,我们的计划相当有防御性:

  • 如果没有邮件连接,则邮件功能不可用
  • 图形输出取决于可用的图形卡
  • 只有网络的可用性才能启用分布式功能

还有更多。

还要注意,对于外部接口,就像用户输入一样,您不应该信任该输入。始终验证输入,并在调用时检查一致性(或存在性)