夏夜寂寞属壁虎对《重构(第2版)》的笔记(3)
-
3.11 基本类型偏执(Primitive Obsession) 78
《算法》里把图这个数据类型做成了相对复杂的类(比如增加邻接边数量这一成员变量)。一开始我还对一些看似多余的逻辑感到烦躁,后来看到拓扑排序的bfs算法时发现这种做法省了一部分算法实现的代码量。当然计算钱和物理量时在这方面欠缺考虑导致的后果自然更严重。
-
1.10 结语 43
个人心得:小步改动不仅适用于重构代码,也适用于构建代码项目。小步改动、小步测试,充分利用多分支版本控制系统的回退、分支功能,commit -m的注释也要写清楚,包括但不限于改动的类型、对什么文件做了改动(虽然可以用git diff查看两个commit的差别,但如果改动的文件少最好加上)、用一句话进一步阐述具体改动,可以大大便利写/重构代码、debug的过程。
补充:要保持代码永远处于工作状态,可以用 pre-commit 一类的钩子检查提交到 git 前代码的状态,比如是否能通过函数功能测试、文档是否齐全、使用的依赖是否都没有违反 license。
-
2.5 重构的挑战 55
这学期和小组队友用git协同开发安卓app的时候的确很被这点困扰。之前没意识到这一点,队友也觉得应该在自己的分支上把功能写完再并入master,导致每次把自己的分支merge到master上的时候总要花一些时间专门处理merge conflicts。
夏夜寂寞属壁虎的其他笔记 · · · · · · ( 全部179条 )
- 咖啡行者的全息烘焙法(第二版)
- 6
- 花衣魔笛手
- 3
- 我将宇宙随身携带
- 4
- Fluent Python, 2nd Edition
- 5
- Programming Rust, 2nd Edition
- 2
- 程序员的职业素养
- 1
- 代码2.0
- 2
- 我与地坛
- 1
- 程序员修炼之道(第2版)
- 2
- C++语言的设计和演化
- 3
- 古希腊思想通识课:希罗多德篇
- 1
- R语言实战
- 1
- 权力意志与永恒轮回
- 2
- 代码大全(第2版)
- 2
- TCP/IP网络编程
- 1
- 程序员的自我修养
- 5
- 历史学十二讲(增订本)
- 2
- 深入理解计算机系统(原书第3版)
- 1
- The Complete Software Developer's Career Guide
- 1
- 哲学是做出来的
- 3
- 深度探索C++对象模型
- 2
- 七周七语言
- 1
- 蒙田随笔
- 3
- 你想活出怎样的人生
- 3
- 历史的巨镜
- 1
- Unix/Linux编程实践教程
- 2
- 深入Linux内核架构
- 1
- 社会学之思(第3版)
- 1
- C++ Primer
- 1
- Operating Systems
- 1
- 深入理解计算机系统(原书第2版)
- 2
- C专家编程
- 1
- C Primer Plus
- 2
- やがて君になる 佐伯沙弥香について(3)
- 1
- Selected Poems of Dickinson
- 3
- On Love and Loneliness
- 3
- 数学之美 (第二版)
- 1
- 中国近代思想史论
- 1
- 家庭、私有制和国家的起源
- 5
- 我的孤独是一座花园
- 1
- 鲁拜集
- 1
- 家庭、私有制和国家的起源
- 1
- 禅与摩托车维修艺术
- 4
- Mother, Madonna, Whore
- 1
- 卡尔·波普尔
- 1
- 裴洞篇
- 2
- 劝学篇
- 4
- 计算机病毒防范艺术
- 1
- 30天自制操作系统
- 5
- 黑客
- 1
- 黑客与画家
- 2
- 复杂性思想导论
- 4
- 汇编语言(第3版)
- 1
- The C Programming Language
- 4
- 阿拉伯─伊斯兰文化史(第一册)
- 3
- The Communist Manifesto
- 3
- 论优美感和崇高感
- 1
- How Behavior Spreads
- 2
- 同性恋研究
- 3
- 沙漏做招牌的疗养院
- 3
- 现代性与大屠杀
- 7
- 麦克白
- 1
- 道德形而上学的奠基
- 1
- 极权主义的起源
- 3
- 自由与多元论
- 5
- 社会运动、政治暴力和国家
- 6
- こころ
- 4
- Justice
- 1
- Word Power Made Easy
- 1
- JavaScript
- 8
- Political Philosophy
- 8