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

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

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

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

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

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

  1. 第4集丨做一个内心强大的人

    目录 不动心 无入而不自得 不动心是人生的必修课 把事实和看法分开 不动心 弘治六年(1493年)春,王守仁参加会试,不幸落第.弘治九年(1496年),他第二次应试,再度落榜.一些跟他一样好几年没考上 ...

  2. 努力做一个内心强大的人

    努力做一个内心强大的人 1.无论做什么,记得是为自己而做,那就毫无怨言. 2.面对困境,也不要悲观厌世. 3.人生没有绝对的公平,但是相对公平的.在一个天平秤上,你得到的越多,也必须比别人承受得更多. ...

  3. 转:从明天起,做一个会听的人,移情、理解、再沟通

    个人理解:知彼解己(Seek first to understand, then to be understood) 复述语句 -- 加入解释 -- 掺入个人感觉 -- 既加以解释,又带有感情:敞开心 ...

  4. 转:做一个会听的人:移情、理解、再沟通

    个人理解: 自以为是, 却习焉而不察:理解.肯定.认可和欣赏 成熟:能掌控勇气和关心之间的平衡 我们惯常地把"让别人理解自己"放在首位 有效的人际沟通的关键是知彼解己,首先去寻求了 ...

  5. 阿里云“网红“运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名"辟拾(P10)": 他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路: 他爱好清 ...

  6. 阿里云“网红quot;运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名"辟拾(P10)": 他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路: 他爱好清 ...

  7. 阿里云“网红运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名"辟拾(P10)": 他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路: 他爱好清 ...

  8. 一、新人成才之路《获得幸福的秘诀:下决心做一个幸福快乐的人》

    在这里,能够为同学们指明人生最重要.最关键的一个人生态度.这个也是指明了人 生最终的目标,就是过的幸福美满.这样,你的人生从一开始到最终谢幕,都能过的幸福 美满.能够分享这个让人获得幸福的方法,我觉得 ...

  9. 做一个有想法的技术人

    看到51CTO技术论坛里<Kirin:做一个有想法的技术人>这篇文章后,心中颇有感悟,在这里和大家交流一下我对技术人的理解和认识.IT技术博大精深,浩如烟海,作为技术人,每个人所掌握的技术 ...

最新文章

  1. 拯救你的久坐不起!用树莓派改造站立式办公桌:在随机时间升降,还有阻力检测功能...
  2. Oracle 10g与安装Perl环境时的冲突以及解决方法
  3. iis6中FTP配置的技巧和细节
  4. Win7 IIS7 HTTP 错误 404.2 - Not Found解决方法 ISAPI CGI
  5. 搜索巨头争夺本地搜索市场
  6. C# Note32: 查漏补缺
  7. Help Jimmy POJ - 1661
  8. @PathVariable为空时指定默认值
  9. 利用GDB、KGDB调试应用程序及内核驱动模块
  10. Python实现的文件夹同步
  11. PowerDesigner16.5操作,从mysql反向生成ER图
  12. Windows 95 输入法编辑器
  13. 用Java实现Md5加密工具类
  14. 深度学习:有监督学习、无监督学习和半监督学习
  15. 中国外显子组测序行业市场供需与战略研究报告
  16. behavior3editor环境搭建
  17. win10 下装win7
  18. 蔡徐坤一条微博转发过亿 幕后推手被判刑五年
  19. 微信语音转文字的体验报告
  20. python3.5.5does not support a f profix

热门文章

  1. 如何在Android上设置默认短信应用
  2. 【学习日志】2022.09.02 (C++)strcmp和stricmp、strcmpi三者之间的区别、C语言判断文件后缀名、ZENO Audio Update、TEN MINUTES PHYSICS
  3. 论文精读——HOG特征提取
  4. CAD图案复制到Excel里面怎么去掉空白部分?如何在CAD中绘制常用的标高符号?
  5. 基于python的景点天气及评价设计
  6. GPS北斗定位模块对车辆导航的意义
  7. PDF文件批量签章骑缝章软件 附百度云盘地址 使用C# itextsharp开发
  8. 新编计算机基础教程 pdf,《新编计算机公共基础教程(Windows-2000版)》.pdf
  9. 统计学习笔记:方差分析
  10. 基于asp.net331婚纱影楼管理系统