摘要:
Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each inp 阅读全文
摘要:
6.1 Extract Method(提炼函数) 你有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 动机: 如果每个函数的粒度都很小,那么函数被复用的机会就更大;这会使高层函数读起来就像一系列注释;如果函数都是细粒度,那么函数的覆写也会更容易些。 阅读全文
摘要:
5.1 重构的记录格式 名称 简短概要 动机 做法 范例 5.2 寻找引用点 编译器无法找到通过反射机制而得到的引用点 5.3 这些重构手法有多成熟。 重构的基本技巧-小步前进、频繁测试-已经得到多年的实践检验。 参考资料: 《重构-改善既有代码的设计》 阅读全文
摘要:
4.1 自测试代码的价值 编写代码其实只占非常小的一部分。有些时间用来决定下一步干什么,另外一些时间花在设计上,最多的时间则是用来调试。 类应该包含它们自己的测试代码。 确保所有测试都完全自动化,让它们检查自己的测试结果。 一套测试就是一个强大的bug侦测器,能够大大缩减查找bug所需要的时间。 编 阅读全文
摘要:
3.1 Duplicated Code(重复代码) 3.2 Long Method(过长函数) 让小函数容易理解的真正关键在于一个好名字。 每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途(而非实现手法)命名。 条件表达式和循环常常也是提炼的信号。 3.3 阅读全文
摘要:
2.1 何谓重构 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。 添加新功能时,你不应该修改既有代码,只管添加新功能。重构时就不能再添加功能,只管改进程序结构。 2.2 为何重构 重构 阅读全文
摘要:
算法: 1、堆的定义:当一棵二叉树的每个结点都大于等于它的两个子节点时,它被称为堆有序。 2、堆排序可以分为两个阶段。在堆的构造阶段中,我们将原始数组重新组织安排进一个堆中;然后在下沉排序阶段,我们从堆中按递减顺序取出所有元素并得到排序结果。 复杂度: 用下沉操作由N个元素构造堆只需少于2N次比较以 阅读全文
摘要:
1.1、你的态度也许倾向于尽量少修改程序,但是 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。 1.2 重构第一步:为即将修改的代码建立一组可靠的测试环境 重构之前,首先检查自己是否有一套可靠的测试机制。这些测 阅读全文