当前位置: 首页 > news >正文

读书笔记4-11.6

这一章的核心思想是,程序员必须承认一个残酷的现实:完美的软件是不存在的。既然我们无法写出毫无瑕疵的代码,那么就必须采取一种“偏执”的防御性策略,来应对必然存在的错误和不确定性。作者将这种策略比作防御性驾驶。在开车时,我们不仅要遵守交通规则,还要时刻警惕其他司机的错误,并提前预判可能发生的意外。同样,在编程时,我们不能只相信自己的代码,还要对输入的数据、调用的外部库、甚至是我们自己写的代码保持怀疑。本章介绍了几种关键的防御性技术。首先是按合约设计 ,它要求我们为每个函数或方法明确地规定其“权利”与“责任”,就像签订一份合同,明确了双方的责任,能极大地减少因误解而产生的错误。其次是死程序不说谎,主张当程序遇到无法处理的错误时,与其让它带着错误的数据继续运行,不如让它立即崩溃,因为一个“死”掉的程序比一个“带病”运行的程序更容易调试和修复。此外,还有断言式编程,通过在代码中插入断言来检查那些“理论上不可能发生”的情况,帮助我们在问题发生的源头就抓住它。本章还讨论了何时使用异常,强调异常应该用于处理真正的“异常”情况,而不是作为程序正常流程的一部分。最后,怎样配平资源强调了“有始有终”的原则,即分配资源的代码也应该负责释放资源,以有效防止内存泄漏和资源耗尽等问题。

http://www.jsqmd.com/news/167278/

相关文章:

  • Markdown表格对比:Miniconda与Anaconda功能差异一览
  • PyTorch模型保存与加载:在Miniconda中进行持久化操作
  • 四轴桥板卧加编程:AB轴坐标转换宏程序与VT送出
  • 2025.10.9
  • Miniconda环境合并:将多个env整合为统一平台
  • 远程服务器资源监控:查看Miniconda容器GPU占用情况
  • Java学习。
  • Miniconda vs Anaconda:为什么选择轻量级Python镜像更高效
  • AI赋能软件测试:如何在质量保障领域真正降低人力成本
  • AdisInsight数据库的3个应用场景与5个内容模块
  • Docker save/load导出导入Miniconda镜像便于迁移
  • [线上问题排查参考 | 01]
  • 免费开源!Stable Diffusion AI 生图天花板,下载安装一款能免费部署的 AI 绘图神器
  • GitHub Pull Request流程:贡献Miniconda相关开源项目
  • 2025大模型完全指南:从原理到实战,一篇就够了,建议收藏学习!初识大模型(非常详细)
  • GitHub Issue模板设计:标准化反馈Miniconda使用问题
  • numa balancing缺陷分析
  • 制剂处方数据库【制剂组分研究】
  • 如何在实际项目中应用 MyVector 类?
  • 2025年东莞线对板连接器厂家口碑洞察报告:从技术到服务的专业选型指南 - 品致汇
  • Linux终端操作进阶:自动化脚本部署Miniconda环境
  • vector模拟实现与核心机制
  • yolov5识别demo
  • 在Miniconda中安装FastAPI构建RESTful接口
  • python基于校园学生行为大数据的精准分析管理系统
  • Python安装后无法导入模块?Miniconda-Python3.10修复sys.path
  • springboot的马术俱乐部管理系统设计与实现
  • conda list与pip list输出差异原因分析
  • Java学习!
  • C/C++复杂类型声明解读:从优先级看螺旋法则 - 24