读书笔记

今天,泛读了<代码:改善已有代码的设计>一书,获益良多.节选部分笔记,记录如下.

软件开发应该有一个理想国,在这个国中维持着完美秩序的,不是哲学家,而是模式.

代码被阅读和修改的次数远远多于它被编写的次数.

为避免自掘坟墓,重构必须系统化进行.

好的测试是重构的根本.花时间建立一个好的测试机制是完全值得的

作何一个傻瓜都能写出计算机可以理解的代码,惟有写出人类可理解的,才是优秀的程序员

重构的节奏:测试,小修改,测试,小修改,测试,小修改…

开发过程中,你可能花上数小时重构,其间用上数十个不同的重构准则.

你可以在软件内部做很多修改,但必须对软件”可受观察的外部行为”只带来很小的变化,甚至没有变化.性能优化常不改变组件行为,只改变内部结构,但出发点不同:性能优化往往使代码较难理解,但为了得到性能不得不如此.

有两顶帽子: 或有两种行为:加新功能,和重构.加新功能时,你不应该修改已有代码,只管加新功能.重构时代不能再加新功能,只管改进程序结构,且此时你不应该添加任何测试,除百发现先前漏掉的东西,只在非常必要时才修改测试.

你会发现,自己经常换帽子.

如果没有重构,程序设计会逐渐腐败变质.代码结构的流失是累积性的.

很多时候,那个”未来的开发者”就是自己.

Ralph Johnson把早期重构描述为擦掉窗户上的污垢,使你看得更远.研究代码时我发现,重构把我带到更高的层次上.

我不是一个伟大的程序员,我只是有些一些优秀习惯的好程序员而已.

良好设计是快速软件开发的根本.如果没有良好设计,可能某一段时间内进展很快,但很快,恶劣设计会让你的速度慢下来,你会把时间花在设计上面,无法添加新功能,带来恶性循环.

重构不是一件需要特别抽出时间做的事,而是应该随时随地做.不应该为重构而重构,之所以,是因为你想做别的事,而重构可以帮助你把那件事做好

大多数重构都为程序引入了更多间接层

有时候已有代码实在太混乱,重构还不如重写.

代码的坏味道有如下种:
duplicated code
long method
large class
long parameter list
divergent change
shotgun surgery
feature envy
data clumps
primitive obsession
switch statements
parallel inheritance hierarchies
lazy class
speculative generality
temporary field
message chains
middle man
inappropriate intimacy
alternative classes with different interfaces
incomplete library class
data class
refused bequest
comments

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s