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

《程序员修炼之道》第五六章读书笔记

《程序员修炼之道》第五六章

        第五章“宁弯不折”中作者强调了代码的解耦和灵活性,在面对系统变化、业务需求调整代码要能够随着变化做出调整而不是在面对需求变更时需要重构或者大范围修改代码。在商城系统升级项目的促销匹配模块中就采用作者提到的解耦原则,通过策略模式解耦多个促销匹配和计算优惠的逻辑。并且通过编写配置文件来精确控制每个促销的匹配先后顺序和是否生效。将促销规则独立为可组合的插件模块,系统就能在保持整体结构不变的前提下支持业务变化。比如这个季度会对商城系统再次进行优化,要求能够实现捆绑销售功能,就可以在不影响之前功能的基础上新增促销活动规则。系统中的组件应该像杂耍中的球一样彼此独立,而不是相互纠缠无法抛起。在变换式编程这一小节中,以往我们常常会用各种嵌套 if-else 写控制逻辑,耦合严重。其实我们可以将一些输入输出给单独抽离出来,依旧是在商城项目中保存各种活动促销配置会有很多参数校验如果通过if,else来控制则会导致有很多if-else的逻辑判断,最后我选择通过责任链的设计模式来精简我的代码,使得代码能够更加清晰,各种校验逻辑能够更加独立。

        第六章“并发”我理解了并发真正的问题在于时域耦合和共享状态。打破时域耦合的观点让我收获良多,我们常常默认某个处理流程必须同步执行,比如下单流程中的座位锁定、入班、修改花名册、消息推送等。其实这些操作都是可以拆分的,比如修改花名册,消息推送等我们可以通过消息队列或者任务调度的方式来解耦处理流程,保证其他的业务尽可能独立于主流程,不影响主流程的执行。“共享状态是不正确的状态”我更是踩过坑,在CRM项目为了提高导出效率我使用了多线程来处理业务逻辑。其实有一个资源是共享,每个线程都有可能访问导致了脏数据的产生甚至于报错,然后我想到了对共享资源加锁,但是这样做又降低了效率。我们应该使用并发容器、不可变对象或“数据复制”来避免共享状态的产生,并发编程的关键不是“控制”,而是“避免”,不是控制线程依次访问共享资源,而是应该避免共享状态的产生。

http://www.dtcms.com/a/349231.html

相关文章:

  • 【云馨AI-大模型】AI热潮持续升温:2025年8月第三周全球动态
  • 复杂场景横幅识别准确率↑91%!陌讯多模态融合算法在智慧园区的实战解析
  • 删掉一个元素以后全为1的最长子数组-滑动窗口
  • 【Luogu】P4317 花神的数论题 (数位DP)
  • 深度学习周报(8.18~8.24)
  • ASCII码值,可打印的字符有
  • 文档目录索引
  • 详解无监督学习的核心原理
  • 基于实例教学的软件工程专业教学系统
  • Livedata:感知生命周期变化,如何更新数据?避免内存泄漏,黏性事件
  • TCP--执行Linux命令(虚拟xshell)
  • 苍穹外卖项目实战(日记十)-记录实战教程及问题的解决方法-(day3-2)新增菜品功能完整版
  • 不再让Windows更新!Edge游戏助手卸载及关闭自动更新
  • Leetcode 3661. Maximum Walls Destroyed by Robots
  • 阿里AI模型获FDA突破性医疗器械认定,AI医疗走向国际舞台,来近屿智能系统学习AIGC大模型技术
  • 芋道前端项目部署后刷新 404 的解决办法(Nginx 配置教程)
  • 计算机网络:聊天室(UDP)
  • 器件(十)——经典封装类型总结
  • JUC之ThreadLocal
  • MySQL的安装和卸载指南(入门到入土)
  • python写上位机并打包250824
  • 第04章 SPSS简介与数据库构建
  • 2025最新ncm转MP3,网易云ncm转mp3格式,ncm转mp3工具!
  • C6.1:发射极偏置放大器
  • 支持多种模型,无限AI生图工具来了
  • 智元精灵GO1 agibot数据转换Lerobot通用格式数据脚本
  • 3.2 半导体随机存取存储器 (答案见原书 P168)
  • 你在四阶段数据成熟度旅程中处于哪个阶段?
  • 高数 不定积分(4-3):分部积分法
  • APP逆向——某站device-id参数(2)