中程在线-重构-卓越程序员修炼之道(笔记1了解重构)

如果下面有任何一句话,是你想说的,那么,请来学习重构吧

(1)重构束缚了我的设计!

(2)重构?改别人的代码啊...改坏了我不负责!

(3)重构啊...那要重新测试了吧...

(4)重构?岂不是白花我的钱?

 

1.1提到重构,大家会有一个想法立即冒出:设计和重构到底什么关系?

 

重构肩负一项特殊使命:它和设计彼此互补。

没有重构,你就必须保证预先做出的设计正确无误,这个压力太大了。

如果你选择重构,问题的重点就转变了。你仍然做预先设计,但是不必一定找出正确的解决方案。此刻的你只需要得到一个足够合理的解决方案就够了。

            ----《重构-Martin》P66

 

1.2没有系统学习过重构的人,还会有以下两个疑惑:改坏代码?重新测试?

 

请先来学习重构,因为这些都是对重构无知而产生的担忧(后面会讲解代码的22种坏味道,使用那些辅助工具发现,修改他们,以及遵循什么样的重构流程),所以,请先跟我学习重构。

 

1.3软件行业潜规则

 

需求是不断变化的

设计是不断变烂的

 

1.4重构的定义

 

重构:对软件内部结构的一种调整,目的是在不改变“软件之可察行为”前提下,提高可理解性,降低其修改成本。

怎么样,是不是从定义上也解释了1.2,重构并不改变软件的可察行为,所以不需要重新测试。

 

2.那些不懂技术的人,常常会一拍脑袋,想出两个加:

 

加人:

他们由1个人,10天搬10个砖头,那么10个人,1天就能搬完了,推出1个人,这个需求要做10天,那么10个人,1天就能搞定这个需求了。

那么请问,1个孕妇,10个月生个孩子,10个孕妇,1个月能生出了孩子么?

 

加班:

一样的道理,1个人,这个需求要做10天,那么,晚上再加8小时班,5天不就搞定了。

我们是人,不是机器。

 

3.勒布朗法则

 

如果团队中出现这样的声音:我们先这样写吧,等以后再改!!!请立即用这一法则

 

稍后等于永不(Later equals never)

 

4.破窗效应

 

没修复的破窗,导致更多的窗户被打破

 

5.代码质量的评价标准

 

价值观:

Cost(total) = Cost(develop) + Cost(maintain)

Cost(maintain) = Cost(understand) + Cost(change) + Cost(test) + Cost(deplay)

所以Cost(maintain)>>Cost(develop)

 

6.什么是好的代码?

 

<敏捷设计原则-Robect C Martin>

第一职责:运行起来所完成的功能,这是模块存在的原因。

第二职责:要和阅读它的人进行沟通,对模块不熟悉的人员应该能够比较容易理解。

第三职责:他要应对变化,因为软件要变化,开发者保证应该尽可能的简单。

 

7.几个思维转变

 

否定功能完成就是code complete。

肯定代码易理解,可维护,才是code complete。

 

否定设计模式精通,算法精通,才是好的程序员

肯定重视源代码,就是好的程序员。

 

8.几个原则

开闭原则。

二八原则。

 

9.代码的坏味道

函数过长

参数过长

Null检查

超多if...else...

switch...case

 

10.其他

UML是多么的烂。

posted on 2010-08-24 01:05  曾浩  阅读(753)  评论(1编辑  收藏  举报

导航