《程序员修炼之道》摘录

1.我的源码让猫给吃了——不要找借口,要负责。

2.软件的熵——不要容忍“破窗户”(低劣的设计、错误决策或是糟糕的代码),见一个修个。

3.石头汤与煮青蛙——做变化的催化剂,避免“启动杂役”;记住打图景,温水煮青蛙。

4.足够好的软件——使质量称为需求问题;避免过度修饰。

5.你的知识资产——定期为你的知识资产投资(最简单的就是买书);批判地分析你读到的和听到的。

6.交流——被打量比被忽略要好(这个深有体会);你说什么和你怎么说同样重要。

7.重复的危害——DRY

8.正交性——消除无关事物之间的影响。

9.可撤销性——如果某个想法是你唯一的想法,在没有什么比这更危险的事情了;不存在最终决策;灵活的架构。

10.曳光弹——原型制作生成用过就扔的代码。曳光弹代码虽然简约,但却是完整的,并且构成了最终系统的骨架的一部分。

11.原型与便笺——任何带有风险的事物。以前没有试过的事物或是对于最终系统终端极端关键的事物。原型并不一定要编写代码,有时用便笺就可以。

12.领域语言。

13.估算——多准确才足够准确

  时长                                       报出估算的单位

   1-15天                                              天

    3-8周                                               周

    8-30周                                             月

    30+周                                     在给出估算前努力思考一下

14.纯文本的威力。

15.shell 游戏——利用命令shell的力量。

16.强力编辑器——(vim 或 sublime text)。

17.源码控制——(git或svn)。

18.调试——最容易欺骗的人是一个人自己;不要恐慌;调试的思维方式。

19.文本操纵——学习一种文本操纵语言。

20.代码生成器——编写能生成代码的代码(《黑客与画家》中也提到这一点)。

21.按合约设计。

22.死程序不说谎——早崩溃;检查每一个可能的错误。

23.断言式编程——如果它不可能发生,用断言确保它不会发生。

24.何时使用异常——将异常用于异常的问题。

25.怎样配平资源——要有始有终。

26.解耦与得墨蕊耳法则——模块之间的耦合减至最少。

函数的得墨忒耳法则规定,某个对象的任何方法都应该只调用属于以下情形的方法:
class Demeter
{
public:
   void example(B &b);
private:
    A *a;
    int func(){}
}
void Demeter::example(B &b)
{
    C c;
    int f = func(); <------------------1. 它自身
    b.invert(); <----------------------2. 传入该方法的任何参数
    a = new A();
    a->setActive(); <------------------3. 它创建的任何对象
    c.print(); <-----------------------4. 任何直接持有的组件对象
}
得墨忒耳法则缩小了调用类中的响应集的规模,结果以这种方式设计的类的错误也往往更少。

27.元程序设计——要配置,不要集成;将抽象放进代码,细节放进元数据。(有所体会)

28.时间耦合——分析工作流,以改善并发性;架构、并发、接口、部署。

29.它只是视图——发布/订阅;MVC。

30.黑板——用黑板协调工作流。

31.靠巧合编程——编写自己能控制的代码,不要靠巧合编程。

32.算法速率。

33.重构——早重构,常重构。

34.易于测试的代码——单元测试;构建测试窗口。

35.邪恶的向导——不要使用你不理解的向导代码。

36.需求之坑——不要搜集需求,要挖掘他们;用户;文档。

37.解开不可能解开的谜题——什么时候坚持,什么时候改变。

38.等你准备好——什么时候准备,什么时候开始。(要有良好的判断)

39.规范陷阱——对有些事情“做”胜于“描述”。

40.圆圈与箭头——不要做形式的奴隶。

前面这七章是对个人而言,第八章对团队而言(后面再看)

关键词:重构  单元测试 没有解不开的难题  交流 曳光弹  元程序设计 DRY 正交性 对代码负责 ”等你准备好“

posted @ 2013-07-17 20:25  wangshijun  阅读(341)  评论(0编辑  收藏  举报