10.6阅读笔记

news/2025/10/6 14:37:41/文章来源:https://www.cnblogs.com/jlr1207/p/19126364

我正在尝试用继承来重构一些重复代码,正好与这本书的第二章内容产生了强烈共鸣。这一章读下来,感觉就像是给我的编程习惯做了一次“大扫除”。
​​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.mzph.cn/news/929415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详细介绍:Qwen2.5-VL 损失函数

详细介绍:Qwen2.5-VL 损失函数pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

hetao 国庆

Day 5 T3 Solution Subtask 1 可能比较具有启发性。 每个人只关心:每条路径上的最大值。我们要让这个值最小。所以容易发现他们只会在最小瓶颈树上走。 由于 MST 一定是最小瓶颈树,所以我们跑 kruskal 然后把树建出来…

详细介绍:AI健康小屋+微高压氧舱:科技如何重构我们的健康防线?

详细介绍:AI健康小屋+微高压氧舱:科技如何重构我们的健康防线?2025-10-06 14:34 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !im…

网站制作关键技术服务器可以备案别人的域名吗

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*程序功能:计算一个正整数n的阶乘,目前最大能运算10000的阶乘,可秒杀。程序意义:加强自己对于大数的处理。说明:此程序对乘法和除法还未做任何优化,如果用上位…

详细介绍:运维 pgsql 安装完后某次启动不了

详细介绍:运维 pgsql 安装完后某次启动不了pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &quo…

廊坊高端品牌网站建设广州西樵网站制作

基坑整体坍塌不亲身经历,不知其恐怖▼前段时间,南宁绿地中央广场房地产项目D号地块(二期)基坑北侧约60米支护桩突然崩塌!所幸无人伤亡。深基坑施工安全生产管理要点一、基坑开挖 1、 临边防护(1)基坑施工必须按要求进行,具体临边防…

visual studio

Microsoft Visual Studio 无法启动程序” D:\install\installedLibllibigl-2.1.0\build\x64\Debug\INSTALL" 系统找不到指定的文件。

[MCP] StreamableHTTPServer

远程通信方式 通信方式:Stdio: 推荐,高效、简洁、本地 Streamable HTTP: 远程前置知识 SSE 全称 Server-Sent Events,中文是“服务器发送事件”。是一种基于 HTTP 的单向通信协议,由浏览器发起连接,服务器可以持…

HttpServletResponse 对象用来做什么? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

谁有国外hs网站手表购物网站排名

核心提示:相信很多机友都会使用UC浏览器,但是其多个功能你们能了解多少? 下面小编就为大家介绍UC浏览器云标签使用方法吧! 1、打开【UC浏览器】,点击【多窗口】按钮,然后点击【云标签】;(如下图所示) 2、登陆微博、QQ等&#…

牛客 周赛109 20250924

牛客 周赛109 20250924 https://ac.nowcoder.com/acm/contest/116945 A: 题目大意: 给定两个坐标,判断和原点一起能否构成一个直角三角形 void solve(){double x, y, u, v;cin >> x >> y >> u &g…

域名网站如何做市场推广长沙网页网站制作

在赋予一个string值的时候,可以用单引号或者双引号。 1.单引号和双引号的区别: 单引号:不会翻译变量。 双引号:会翻译变量,会将变量替换为之前赋予变量的值。 例子: (1)单引号&a…

建歌网站多少钱温州网站建设价格

💡💡💡本文独家改进:卷积和注意力融合模块(CAFMAttention),增强对全局和局部特征的提取能力,2024年最新的改进思路 💡💡💡创新点:卷积和注意力巧妙设计 💡💡💡如何跟YOLOv8结合:1)放在backbone后增强对全局和局部特征的提取能力;2)放在detect前面,增…

罗技G102螺丝型号

共有三种,都是PH00螺丝(反正就就是很小的十字螺丝) 外壳固定用  M1.4*4mm  直径3mm厚0.5的平头螺丝  共三个 侧键固定用  M2*4mm   直径5mm厚0.5的平头螺丝  共俩个 主板固定用  M1.4*3mm  直径4…

详细介绍:深入剖析C#构造函数执行:基类调用、初始化顺序与访问控制

详细介绍:深入剖析C#构造函数执行:基类调用、初始化顺序与访问控制pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

公司网站建设进度vitality wordpress

TCP与UDP TCP 是面向连接的、可靠的流协议,通过三次握手建立连接,通讯完成时要拆除连接。 UDP是面向无连接的通讯协议,UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象 端口号: 端口号用…

上海网站建设 销售营销型网站开发推荐

一、产品介绍 此次发布一款7寸高清全新外壳产品,让HMI人机界面家族再添一新成员。该产品相比其他外壳有以下5个大改动: 1 表面玻璃盖板使用2.5D立体结构; 2 液晶盖板采用一体黑设计,且液晶屏与触摸板是全贴合结构; …

广州网站建设培训学校seo优化外包

了解动态内存函数 前言:一、malloc函数二、calloc函数三、realloc函数四、free函数 前言: 在C语言中,动态内存函数是块重要的知识点。以往,我们开辟空间都是固定得,数组编译结束后就不能继续给它开辟空间了&#xff0…

[LUCKY」在Windows下使用STUN穿透实现Minecraft联机并设置SRV记录

[LUCKY」在Windows下使用STUN穿透实现Minecraft联机并设置SRV记录2024.02.18 本教程目标 在无公网环境低成本的实现较为稳定的 Minecraft Java版联机(服务器) 目前常见的联机(服务器)方法及其问题(针对好友联机和小…

系统管理员的日常困境与幽默自嘲

这篇文章通过Reddit论坛上系统管理员们的真实讨论,展现了IT专业人员面对"请联系系统管理员"这类提示时的无奈与幽默,揭示了技术支持工作中的常见困境和职业共鸣。这篇文章通过Reddit论坛上系统管理员们的真…