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

10.6阅读笔记

我正在尝试用继承来重构一些重复代码,正好与这本书的第二章内容产生了强烈共鸣。这一章读下来,感觉就像是给我的编程习惯做了一次“大扫除”。
​​1. 重复的邪恶(DRY原则)—— 一次痛苦的领悟​​
“不要重复你自己”(DRY原则)是本书最核心的原则之一。书上说,重复是“邪恶”的,我举双手赞同!上学期用C++写数据结构作业时,我写过两个不同的链表操作,它们都有一个几乎相同的printList函数。当时没觉得有什么,直到需求变了,输出格式要调整,我居然忘了改第二个,导致了诡异的bug。这就是​​无意的重复​​,是维护的噩梦。
​​2. 正交性的艺术—— 让修改局部化​​
“正交性”这个词听起来很数学,但书中用“消除无关事物之间的影响”来解释就非常清晰了。这和我们Java老师强调的“高内聚、低耦合”完全是一回事!
​​从C到C++/Java的演进:​​ 在C语言中,数据和函数是分离的。一个数据结构变了,所有操作它的函数都可能要检查,缺乏正交性。而C++的类和Java的类将数据和对数据的操作绑定在一起,​​提高了内聚性​​。一个Student类的修改,其影响大部分被限制在类内部。
​​Java中的具体体现:​​ 我们最近学的​​接口​​就是实现正交性的利器。比如,我设计了一个DataStorage接口,有save和load方法。我的业务逻辑只依赖这个接口,而不关心底层是用文件、数据库还是网络存储。这样,如果我哪天想从文件存储切换到数据库存储,我只需要写一个新的DatabaseStorage类来实现这个接口,业务逻辑代码​​完全不需要改动​​!这就是正交性带来的巨大好处——​​易于变化和测试​​。
​​3. 可撤销性—— 我给项目留的“后路”​​
“最终决策”是鸵鸟的心态,而“可撤销性”是务实的智慧。这直接影响了我的迷你图书管理系统设计。最初,我为了方便,直接把书籍数据保存在内存的ArrayList里。但想到“可撤销性”,我决定即使第一个版本不实现持久化,也要让​​数据存储层与业务逻辑分离​​。
​​总结与联想:​​
这一周,我仿佛手握DRY和正交性两把利器。以前写代码只想着“实现功能”,现在会下意识地思考“如何设计才能让未来修改时更轻松”。这就像从“盖茅草屋”转向学习“盖钢筋混凝土大厦”的思维转变。虽然一开始会多花一点设计时间,但长期来看,代码的健壮性和可维护性是指数级提升的。

http://www.hskmm.com/?act=detail&tid=25483

相关文章:

  • hetao 国庆
  • 详细介绍:运维 pgsql 安装完后某次启动不了
  • visual studio
  • [MCP] StreamableHTTPServer
  • 牛客 周赛109 20250924
  • 罗技G102螺丝型号
  • 详细介绍:深入剖析C#构造函数执行:基类调用、初始化顺序与访问控制
  • 英语_阅读_Let your baby go_待读
  • 第三章习题
  • 系统管理员的日常困境与幽默自嘲
  • AI数据标注平台获融资挑战行业巨头
  • 详细介绍:如何用 pnpm patch 给 element-plus 打补丁修复线上 bug(以 2.4.4 修复 PR#15197 为例)
  • Numericaltables1
  • ARC 207
  • 半年小结 Vol4. 跌跌撞撞开启 PhD 生涯
  • 深入解析:C++:内存管理
  • 大数求余
  • visual studio 无法打开文件
  • 基于MPPT算法的光伏并网发电系统simulink建模与仿真
  • 实用指南:【系统架构设计师】2025年上半年真题论文回忆版: 论系统负载均衡设计方法(包括解题思路和参考素材)
  • 软件版悟空博弈+WAUC构筑元人文演化之路研究报告——声明Ai研究
  • QBXT2025S刷题 Day5题
  • [KaibaMath1001] 关于∀ε0,|a-b|ε = a=b的证明
  • 基于Web的分布式图集管理系统架构设计与实践 - 教程
  • TCP小结 - 指南
  • 国庆 Day2 强基物理
  • ZR 2025 十一集训 Day 6
  • 软件版悟空博弈 + WAUC:构筑元人文的演化之路
  • 基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
  • AirSim 安装过程记录 - zzh