尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

11.3阅读笔记

11.3阅读笔记
📅 发布时间:2026/6/19 4:04:40

​​1. 变化是必然的:拥抱“柔性”设计​​
“柔性设计”不是指设计能预测所有变化,而是指当变化来临时,​​修改所造成的连锁反应被降到最低​​。这直接回到了我们10月份讨论的​​正交性​​和​​DRY原则​​。
​​糟糕的设计(缺乏柔性):​​ 如果我当初直接写死一个Book类,现在就需要修改这个类,加上fileSize字段,并增加一个type字段来区分是纸质书还是电子书。这会导致所有用到Book类的地方(显示、存储)都要增加if-else判断,​​违反了开放-封闭原则​​。
​​柔性的设计(运用多态):​​ 幸好我前期有意识地使用了接口和继承。我很容易就做出了以下重构:
创建一个Publication接口(或者抽象类),定义getId(), getName(), getAuthor()等共同方法。
让原来的Book类实现这个接口,并改名为PaperBook。
新建一个Ebook类,同样实现Publication接口,并拥有自己的fileSize属性。
这样,我的BookService和BookRepository可以改为操作Publication接口。无论是纸质书还是电子书,都可以被统一管理。增加新的出版物类型(比如期刊)也变得非常容易。​​变化被限制在增加新模块(新的实现类),而不是修改现有模块。​​
​​2. 重构:而不是“凑合”​​
书中将代码的退化比作“熵增”,而​​重构​​就是我们对抗熵增的武器。重构不是等到代码烂透了再重写,而是在日常开发中持续进行的、保持代码健康的小调整。
虽然功能没变,但代码的可读性大大增强,每个小方法都可以被独立理解和测试。这就是重构的魅力。
​​3. 何时重写?艰难的决策​​
书中也坦诚地讨论了“何时应该重写”。当代码库已经千疮百孔,修补的成本高于重建的成本时,就需要考虑重写。这让我想起我大一用C写的一个小游戏,代码全部挤在main函数里,没有任何结构可言。现在去看,修复一个bug会引入两个新bug。对于那种情况,​​重写是比重构更经济的选择​​。但对于我现在的Java项目,由于前期注意了设计,代码结构还算清晰,​​持续的重构是更优策略​​。

相关新闻

  • K8S最全详解 - 智慧园区
  • 工作感受月记(202511月)
  • P11261 [COTS 2018] 直方图 Histogram

最新新闻

  • 麻省理工研究人员打造 Fractal 操作系统,获苹果 M1 芯片新发现
  • React写的WebVR全景看房跳转demo,带贝壳式热点导航和视角控制
  • 2026年郑州脚手架搭建公司推荐:钢管脚手架/盘口脚手架搭建拆除、室内外装修架子搭设、脚手架租赁施工怎么选 - 海棠依旧大
  • 从PHP一句话木马到Webshell大马:攻防原理与实战防御指南
  • BepInEx IL2CPP启动失败:技术原理与完整解决方案指南
  • Elastic 被评为 IDC MarketScape《2026 年全球 SIEM 厂商评估》领导者

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号