《重构-改善既有代码的设计》读书笔记
2019独角兽企业重金招聘Python工程师标准>>>
在阅读这本书之前,我理解的重构是调整代码,让代码更加容易阅读。在我跟我同事的沟通中重构还包含了扩展功能的部分。
现在看来,我所理解的重构混淆了升级的概念,也只是了解了重构最表层的东西。重构的真正定义是:在不改变软件(这里的软件通常指一个方法)可观察行为的前提下,调整其结构。
什么是可观察行为?可观察行为是指使用软件所产生的结果。但是为什么要在不改变软件可观察行为的前提下,调整其结构呢?因为调整结构势必会改变代码的逻辑,既然逻辑都改变了又怎么保证你的重构没有问题呢。因此在不改变软件可观察行为的前提下,就是重构结果的测量标准。也只有在这个标准下,才能保证重构只是调整了软件的结构,而没有改变软件的可观察行为。
那么怎么测量软件的可观察行为没有改变呢?答案是单元测试。以前所理解的单元测试只是测试代码的功能。其实单元测试最大的作用是保证重构前后软件可观察行为的一致(代码只会编写一次,但会重构无数次)。
转载于:https://my.oschina.net/u/587323/blog/651941
《重构-改善既有代码的设计》读书笔记相关推荐
- 读书笔记 | 墨菲定律
1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...
- 读书笔记 | 墨菲定律(一)
1. 有些事,你现在不做,永远也不会去做. 2. 能轻易实现的梦想都不叫梦想. 3.所有的事都会比你预计的时间长.(做事要有耐心,要经得起前期的枯燥.) 4. 当我们的才华还撑不起梦想时,更要耐下心来 ...
- 洛克菲勒的38封信pdf下载_《洛克菲勒写给孩子的38封信》读书笔记
<洛克菲勒写给孩子的38封信>读书笔记 洛克菲勒写给孩子的38封信 第1封信:起点不决定终点 人人生而平等,但这种平等是权利与法律意义上的平等,与经济和文化优势无关 第2封信:运气靠策划 ...
- 股神大家了解多少?深度剖析股神巴菲特
股神巴菲特是金融界里的传奇,大家是否都对股神巴菲特感兴趣呢?大家对股神了解多少?小编最近在QR社区发现了<阿尔法狗与巴菲特>,里面记载了许多股神巴菲特的人生经历,今天小编简单说一说关于股神 ...
- 2014巴菲特股东大会及巴菲特创业分享
沃伦·巴菲特,这位传奇人物.在美国,巴菲特被称为"先知".在中国,他更多的被喻为"股神",巴菲特在11岁时第一次购买股票以来,白手起家缔造了一个千亿规模的 ...
- 《成为沃伦·巴菲特》笔记与感想
本文首发于微信公众帐号: 一界码农(The_hard_the_luckier) 无需授权即可转载: 甚至无需保留以上版权声明-- 沃伦·巴菲特传记的纪录片 http://www.bilibili.co ...
- 读书笔记002:托尼.巴赞之快速阅读
读书笔记002:托尼.巴赞之快速阅读 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<快速阅读>之后,我们就可以可以快速提高阅读速度,保持并改善理解嗯嗯管理,通过增进了解眼睛和大脑功能 ...
- 读书笔记001:托尼.巴赞之开动大脑
读书笔记001:托尼.巴赞之开动大脑 托尼.巴赞是放射性思维与思维导图的提倡者.读完他的<开动大脑>之后,我们就可以对我们的大脑有更多的了解:大脑可以进行比我们预期多得多的工作:我们可以最 ...
- 读书笔记003:托尼.巴赞之思维导图
读书笔记003:托尼.巴赞之思维导图 托尼.巴赞的<思维导图>一书,详细的介绍了思维发展的新概念--放射性思维:如何利用思维导图实施你的放射性思维,实现你的创造性思维,从而给出一种深刻的智 ...
- 产品读书《滚雪球:巴菲特和他的财富人生》
作者简介 艾丽斯.施罗德,曾经担任世界知名投行摩根士丹利的董事总经理,因为撰写研究报告与巴菲特相识.业务上的往来使得施罗德有更多的机会与巴菲特亲密接触,她不仅是巴菲特别的忘年交,她也是第一个向巴菲特建 ...
最新文章
- 3.27课·········悬浮动态分层导航与隐藏导航
- VC++图片框控件静态和动态加载位图
- ODBC API 学习总结
- 修改资料时碰到的问题,
- ASP.NET MVC下使用SWFUpload完成剪切头像功能
- OSI七层与TCP/IP四/五层网络架构
- SAP Spartacus里如何查找所有可以focus的HTML元素
- 错误: 非法的表达式开始_虽然这两个C语言宏定义很简单,但是能在程序运行前找到错误代码...
- Oracle中执行存储过程call和exec区别
- Spring框架学习3:bean元素属性
- Web Clip 图片变淡变浅变灰解决方案
- 计算机组成原理实验数据通路,《计算机组成原理》实验报告——数据通路
- gba模拟器ios_不越狱iOS设备安装GBA模拟器 GBA4iOS 方法
- redis命令之string类型setex命令用法详情
- ROS和ROS2.0到底该用哪个呢?
- form表单提交和ajax表单提交
- java中数组的引用是什么意思_java中的数组是引用数据类型。
- 音视频之opengl渲染图片
- PCI设备的访问方法_桥设备(type1)
- wps字体颜色怎么改
热门文章
- 线程与进程的区别及其通信方式
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现文档分类
- 编程之美读书笔记1.3 —— 一摞烙饼的排序
- can总线配置读入是什么意思_CAN总线(一)
- keil4如何将c语言转换成汇编语言_keil中怎么在c语言里嵌入汇编语言
- 排序算法java 简书_常用的排序算法(Java版)
- mysql回表慢sql_MySQL 的覆盖索引与回表
- 【转】如何用一个实例来探讨嵌入式软件架构设计
- 【LeetCode 剑指offer刷题】数组题11:228. Summary Ranges
- PIE SDK导出图片