程序员修炼之道--从小工到专家阅读笔记02

第三章 基本工具

  1. 纯文本的威力< 用纯文本保存知识 >缺点:1)与压缩的二进制格式相比,存储纯文本所需空间更多2)要解释及处理纯文本文件,计算上的代价可能更昂贵6优点:1)保证不过时2)杠杆作用3)更易于测试。Unix 哲学:提供”锋利“的小工具,其中每一样都意在把一件事情做好(面向行的纯文本文件)
  2. 强力编辑:编辑器的特性:1)可配置2)可扩展3)可编程
  3. 源码控制:进步远非由变化组成,而是取决于好记星。不能记住过去的人,被判重复过去。
  4. 调试:
    调试的心理学< 要修正问题,而不是发出指责 >
    调试的思维方式:最容易欺骗的人是一个人自己。橡皮鸭:找到问题的原因的一种非常简单、却又特别有用的技术,是向别人解释他< 不要假定,要证明 >

第四章 注重实效的偏执

  1. 按合约设计:没有什么比常识和坦率更让人感到惊讶。按合约设计: 一种简单而强大的技术,他关注的是用文档记载(并约定)软件模块的权利与责任,以确保程序正确性< 通过合约进行设计 >出错时要偏向消费者,这是我们对行为的保证
  2. 断言式编程:在自责中有一种满足感。当我们责备自己时,会觉得再没有人有权责备我们。这绝不会发生。。。我们不要这样自我欺骗,特别是在编码时< 如果他不可能发生,用断言确保他不会发生 >
  3. 何时使用异常

第五章 弯曲,或折断

  1. 解耦与得墨忒耳法则:好篱笆促成好邻居。函数的得墨忒耳法则视图使任何给定程序中的模块之间的耦合减至最少
  2. 元程序设计:再多的天才也无法胜过对细节的专注。我们可以让我们的代码变得高度可配置和”软和“ ------ 也就是容易适应变化
    < 要配置,不要集成 >< 将抽象放进代码,细节放进元数据 
  3. 不要让你的项目(或你的职业生涯)走上渡渡鸟的道路(毛里求斯岛上的渡渡鸟不能适应人类和他们的家畜的出现,很久就灭绝了。这是人类
    记载的第一起物种灭绝)
  4. 时间是软件架构的一个常常被忽视的方面。时间有两个方面对我们很重要:并发(事情在同一时间发生)和次序(事情在时间中的相对位置)
    我们需要容许并发,并考虑解除任何时间或次序上的依赖
  5. 它只是视图:那人依然只听到,他想要听到的东西,而不顾其他。不要把程序写成一个大块,应该”分而治之“,吧程序划分成模块
    模块的一个好定义就是,他具有单一的、定义良好的责任让视图与模型分离
  6. 黑板系统让我们完全解除了我们的对象之间的耦合,并提供了一个”论坛“,知识消费者和生产者可以在哪里匿名、异步地交换数据,还能减少我们必须编写的代码的数量。
    可以用黑板协调完全不同的事实和因素,同时又使个参与方保持独立、甚至隔离。