目录
- 一、对这本书的感想和评价
- 二、原则101"复用而非重复"(Don't Repeat Yourself, DRY)的实施时机?
电子版地址: https://gitcode.com/qq_43920838/Reference_book.git
一、对这本书的感想和评价
《软件开发的201个原则》(201 Principles of Software Development)是一本经典的软件开发指南,浓缩了行业经验和最佳实践。以下是我的评价和感想:
- 书籍的核心价值
全面性:覆盖需求、设计、编码、测试、维护等全生命周期,201条原则短小精悍,适合随时查阅。
实用性:每条原则均源自实践,例如:
原则15 “设计应允许变更” → 你在前端组件设计中使用的响应式布局(el-row/el-col)和模块化图表初始化(initCharts)体现了这一思想。
原则39 “避免过早优化” → 你的代码先实现核心功能(数据获取、分页),再逐步优化(如图表按需渲染)。
语言简洁:每条原则仅1-2页,直击要点,适合快速回顾。
- 与你的技术实践的关联
从你展示的招聘系统代码中,可以看到书中多个原则的实际应用:
书中原则 你的代码体现
原则5 “保持简单性” 使用Element Plus组件清晰组织UI,避免过度设计(如表格列用el-tooltip简化长文本展示)
原则23 “分层设计” 前端分层:数据层(Axios)、逻辑层(Composition API)、视图层(模板)分离
原则68 “持续验证” 通过v-loading和ElMessage提供实时反馈,增强用户体验
原则101 “复用而非重复” 封装initCharts方法复用图表逻辑,避免重复代码
原则177 “监控系统行为” 使用ECharts可视化监控人才数据分布(技术栈、学历)
- 可能的改进建议(结合书中原则)
错误处理增强(原则82 “处理所有错误”):
当前代码捕获了API错误,但可细化处理(如重试机制、错误边界组件)。
性能优化(原则143 “效率与可维护性平衡”):
分页数据量大时可考虑虚拟滚动(如el-table的virtual-scroll)。
可测试性(原则189 “设计可测试的软件”):
将数据获取逻辑提取为独立Hook,便于单元测试:
- 书籍的局限性
技术迭代:部分原则(如瀑布模型相关)需结合现代敏捷/DevOps实践调整。
深度不足:每条原则仅简要介绍,需读者结合其他资源(如《代码整洁之道》《设计模式》)深化理解。
案例缺失:缺乏具体代码示例,初学者可能难以直接应用。
二、原则101"复用而非重复"(Don’t Repeat Yourself, DRY)的实施时机?
总结
编码时:保持复用意识,对明显的重复立即封装。
开发中:定期回顾代码,合并重复模式(如抽象countFieldValues)。
迭代时:持续优化技术债务,像园丁修剪枝叶一样维护代码。
关于原则101"复用而非重复"(Don’t Repeat Yourself, DRY)的实施时机,我的建议是:既不是完全在写代码时立即封装,也不是等项目完成后再处理,而是一个渐进式、有意识的平衡过程。以下是具体分析:
- 何时开始考虑复用?
(1) 首次实现时:保持"适度"封装
不要过度设计:在首次编写代码时,如果某段逻辑的复用性不明显(例如只被调用1次),可以先实现功能,确保代码正确性。
但要有"复用意识":当发现以下信号时,应当场封装:
相同逻辑出现两次(如你的processSkillData和processEducationData有相似模式)
代码块功能独立(如你的initCharts方法)
未来可能扩展(如分页的handleSizeChange/handleCurrentChange)
(2) 重构阶段:主动识别重复
在功能开发完成后,通过**代码审查或静态分析工具(如ESLint)**识别重复模式。
- 如何平衡"立即封装" vs “后期重构”?
场景 建议策略 你的代码示例
明确可复用的逻辑 立即封装(如工具函数、组件)
尚不明确的逻辑 先实现,标记TODO注释,后期重构 无
重复代码已出现2+次 立即停止编码,提取公共部分 如果表格中有多个el-tooltip列,可封装为组件
项目时间紧迫 暂时保留重复,但记录技术债务,后续迭代修复 无
- 关键原则
三次法则(Rule of Three):当相同模式出现第三次时,必须重构。
YAGNI(You Aren’t Gonna Need It):不要为"可能"的复用提前增加复杂度。
可读性优先:如果封装会降低代码清晰度,暂时保持重复。