曾设计了 ALGOL 语言的团队得到了下面的建议: The best is the enemy of the good.(完美是优良之大敌). 愈是追求完美, 越有可能完不成任务.

--<<代码大全>> #读书笔记#

软件的内在质量特性有:

  • 可维护性(Maintainability);
  • 灵活性(Flexibility);
  • 可移植性(Portability);
  • 可重用性(Reusability);
  • 可读性(Readability);
  • 可测试性(Testability);
  • 可理解性(Understandability).

--<<代码大全>> #读书笔记#

凡中国产金之区,大约百余处,难以枚举。山石中所出,大者名马蹄金,中者名橄榄金、带胯金,小者名瓜子金。水沙中所出,大者名狗头金,小者名麸麦金、糠金。平地掘井得者,名面沙金,大者名豆粒金。皆待先淘洗后冶炼而成颗块。

<<天工开物·五金>>

软件的外在质量特性有:

  • 正确性(Correctness);
  • 可用性(Usability);
  • 效率(Efficiency);
  • 可靠性(Reliability);
  • 完整性(Integrity);
  • 适应性(Adaptability);
  • 精确性(Accuracy);
  • 健壮性(Robustness).

<<代码大全>> #读书笔记#

有一些编程问题与信仰有关, 当管理者试图要求统一时可能会激怒程序员, 这些问题包括:

  • 编程语言;
  • 缩进风格;
  • 大括号的摆放位置;
  • 所用的集成开发环境;
  • 注释风格;
  • 效率与可读性的取舍;
  • 对方法的选择(如 Scrum, 极限编程, 渐进交付);
  • 编程工具;
  • 命名习惯;
  • 对 goto 的使用;
  • 对全局变量的使用;
  • 量度(特别是有关生产力的量度, 如每天编写的代码行数).

--<<代码大全>>

软件没有重量也没有实体, 复杂化的速度却十分迅速.

以微软的 windows 系统为例, 1993 年, windows 系统包含 400 ~ 500 万行代码;

2003 年, windows 的 vista 版本已经包含有 5000 万行代码.

每一行代码等价于时钟里的一个齿轮, windows 系统如果是机器, 就纳入了 5000 万个会动的部件.

windows 各个版本的代码行数

心理取向(Psychological Set)是这样一种现象: 人们看到的是他们所希望看到的东西.

比如下图里, "春天里的巴黎":

春天里的巴黎

你看到几个 "the" 了? 这种取向常常导致调试时的盲目.

--<<代码大全>>

如果你有不少的坏习惯, 这恐怕是一个坏消息, 那就是: 一个习惯形成之后就基本不可消除.

不过还有一个好消息, 那就是你可以通过培养一个好习惯来替代坏习惯.

比如, 以往你感到无聊烦闷时, 就习惯刷刷抖音微博, 现在则改为看看书.

--驯心课堂

最早的选择留下了长远的影响: 罗马老百姓的手推车宽度必须要跟皇帝的战车一样, 这样才能跟着战车在路面留下的车辙.

战车的大小要能容纳两匹高大战马的宽度, 换成现在的尺寸是 143.5 厘米.

古罗马军团进入英国时, 建造了 143.5 厘米宽的长程御道, 等英国人开始建造马车轨道时, 就沿用了同样的宽度.

等后来开始建造铁路时, 虽然不用马匹了, 但宽度继续沿用了下来, 然后继续普及到全世界.

快转到美国佛罗里达的航天飞机, 因为火箭引擎要从犹他州通过火车运过来, 最终的结果是火箭本身的直径无法比 143.5 厘米宽太多!

有人打趣说: 这一限制在两千年前就由两匹马的屁股决定了.

-- <<科技想要什么>>

正交性的概念来自于几何学: 如果两条直线相交成直角, 它们就是正交的.

用向量术语来说, 就是两条直线互不依赖. 沿着某一条直线移动, 投影到另一条直线上的位置不变.

在编程领域, 正交性用于表示某种不相依赖或是解耦性.

如果两个或更多的事物中的一个发生变化, 不会影响其它事物, 这些事物就是正交的.

在设计良好的系统中, 数据库代码与用户界面是正交的: 改动界面不影响数据库; 更换数据库也不用改动界面.

正交性

--<<程序员修炼之道>>

到目前为止, 人类创造出 50 万部电影, 大约 100 万部电视剧集. 录制的歌曲至少有 1100 万首. 化学家编目的化学物有 5000 万种.

在<<只想买条牛仔裤: 选择的悖论>>(The Paradox of Choice)一书中, 心理学家巴里·施瓦茨指出: "今日典型的超市里可以找到 285 种甜饼干, 175 种色拉酱和 85 个牌子的薄脆饼干, 让消费者麻痹了."

-- <<科技想要什么>>

交流路径的数量与项目成员数量的平方大致成正比.

当有 10 名程序员时, 相互间的交流路径就有 45 条.

当程序员的数目到达 50 时, 其潜在的交流路径将超过 1200 条.

对于一个大的项目, 改善交流效率的常用方法是采用正式的文档.

--<<代码大全>>

交流路径

养成一个好习惯需要多长时间呢? 不是 21 天, 而是看情况.

如果你只是想养成晚饭后散步的习惯, 或许两周就行了;

但如果你想养成早起去跑步的习惯, 三个月可能都还不够.

--驯心课堂

有关程序员编程生产力的个体差异的一份研究发现:

最好和最差的程序员的初始编码用时比例为 20:1, 调试用时比例为 25:1, 程序规模比例为 5:1, 程序执行速度比例为 10:1;

一句话总结: 程序员之间有着数量级的差异(不过薪水的差异却不会如此~~)

--<<代码大全>>