反脆弱 做一个内心强大的人_需要强大的软件? 使它脆弱

反脆弱 做一个内心强大的人

在任何软件项目中,目标都是创建稳定的东西。 我们不希望它在用户面前崩溃。 我们也不希望我们的网站显示“内部应用程序错误”而不是网页。 我们希望我们的软件能够运行,而不是失败。 这是一个完全有效和合乎逻辑的愿望,但是要实现这一目标,我们必须使我们的软件尽可能脆弱。 这听起来可能违反直觉,但这就是事实。 您的应用程序在开发中越脆弱 ,在生产中就越强大

脆弱,我指的是“ 快速失败”理念,与“失败安全”相反。 我相信您知道其中的区别,但是无论如何,让我以身作则提醒您。 这是故障安全的:

public int size(File file) {
  if (!file.exists()) {
    return 0;
  }
  return file.length();
}

应该使用此方法来计算并返回文件大小。 它首先检查文件是否存在。 如果不存在,则该方法返回零。 确实,该文件不存在,因此没有大小。 我们可能会抱怨该文件不存在,但是为什么呢? 为什么要吵? 让我们保持安静并返回零。 我们不会失败,因为我们正在努力保持应用程序的运行。 这称为故障保护。

相反,这是“快速失败”的外观:

public int size(File file) {
  if (!file.exists()) {
    throw new IllegalArgumentException(
      "There is no such file; I can't get its length."
    );
  }
  return file.length();
}

我们找不到文件? 我们没有隐藏这一事实。 我们将这种情况公开并可见。 我们尖叫和哭泣。 我们抛出异常。 我们希望该应用程序崩溃,崩溃和失败,因为有人给了我们一个不存在的文件。 我们抱怨和抗议。 这称为快速失败。

如果我们随处遵循它,哪种哲学将使我们的软件健壮且具有故障恢复能力? 只有第二个-快速失败。

为什么? 由于故障越快越容易,因此修复起来就越快。 修复将更简单,也更明显。 快速故障修复是一种更好的可维护性方法。 代码变得更加清晰。 跟踪故障要容易得多。 所有方法都准备好打破甚至在最微小的问题上抛出异常。

在此示例中,如果该方法返回零,则该文件是否存在且其大小实际上是否为零,或者其名称是否错误并且只是找不到而并不明显。 故障安全方法掩盖了问题并降低了代码的可维护性,这就是为什么难以稳定的原因。

首先,在生产过程中,我们将发生许多崩溃和错误。 但是所有这些都将是可见的并且易于理解。 我们将修复它们并进行单元测试。 每个修复程序将使我们的软件更稳定,并更好地被测试覆盖。

考虑到故障安全方法设计的软件在开始时看起来会更稳定,但会Swift降级,不可避免地会变成无法维护的混乱局面。

考虑到“快速失败”方法而设计的软件在开始时会经常崩溃,但是会通过每次修复提高其稳定性,最终变得非常稳定和健壮。

这就是为什么脆弱性是鲁棒性的关键成功因素。

翻译自: https://www.javacodegeeks.com/2015/09/need-robust-software-make-it-fragile.html

反脆弱 做一个内心强大的人

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值