程序员修炼之道-读书笔记

注重实效的程序员不仅要完成工作,而且要完成的漂亮

Care About Your Craft
关心你的技艺

Think! Your Work
思考!你的工作

我们,采集的只是石头,却必须时刻展望未来的大教堂

- 采集工人的信条

第1章 注重实效的哲学

注重实效的程序员的特征是什么?我们觉得是他们处理问题、寻求解决方案时态度、风格、哲学。他们能够越过直接的问题去思考,总是设法把问题放在更大的语境中,总是设法注意更大的图景。

我的源码让猫给吃了

名言:在所有的弱点中,最大的弱点是害怕暴露弱点

提示:提供各种选择,不要找蹩脚的借口

软件的熵

提示:不要容忍破窗户

石头汤与煮青蛙

提示:做变化的催化剂
提示:记住大图景

足够好的软件

提示:使质量成为需求问题

你的知识资产

名言:知识上的投资总能得到最好的回报

提示:定期为你的知识资产投资
目标:
1. 每年至少学习一种新语语言
2. 每季度阅读一本技术书籍
3. 也要阅读非技术书籍
4. 上课
5. 跟上潮流
6. 上网
7. 实验不同的环境
8. 参加本地用户组织

提示:批判的分析你读到的和听到的

交流

名言:我相信,被大量比被忽略要好
提示:你说什么和你怎么说同样重要

第2章 注重实效的途径

重复的危害

提示:DRY - Don`t Repeat Yourself 不要重复你自己
提示:让复用变得容易

正交性

提示:消除无关事物之间的影响

可撤销性

名言:如果某个想法是你唯一的想法,再没有什么比这更危险的事情了
提示:不存在最终决策

曳光弹

提示:用曳光弹找到目标

原型与便签

提示:为了学习而制作原型

领域语言

提示:靠近问题领域编程

估算

提示:估算,以避免发生意外
提示:通过代码对进度表进行迭代

第3章 基本工具

纯文本的威力

提示:用纯文本保存知识

shell游戏

提示:利用shell命令的力量

强力编辑

工具是手的延伸。
提示:用好一种编辑器

源码控制

提示:总是使用源码控制

调式

提示:要修正问题,而不是发出指责
提示:不要恐慌
提示:Select 没有问题
提示:不要假定,要证明

文本操纵

提示:学习文本操纵语言

代码生成器

编写能编写代码的代码

第4章 注重实效的偏执

提示:你不可能写出完美的软件

按合约设计

提示:通过合约进行设计

死程序不说谎

提示:早崩溃

断言式编程

提示:如果它不可能发生,用断言确保它不会发生

何时使用异常

提示:将异常用于异常的问题

怎样配平资源

提示:要有始有终

第5章 弯曲,或折断

解耦与得墨忒耳法则

提示:使模块之间的耦合减至最少

元程序设计

提示:要配置,不要集成
提示:将抽象放进代码,细节放进元数据

时间耦合

提示:分析工作流,已改善并发性
提示:用服务进行设计
提示:总是为并发进行设计

它只是视图

提示:使视图与模型分离

黑板

提示:用黑板协调工作流

第6章 当你编码时

靠巧合编程

提示:不要靠巧合编程

算法速率

提示:估算你的算法的阶
提示:测试你的估算

重构

提示:早重构,常重构

易于测试的代码

提示:为测试而设计
提示:测试你的软件,否则你的用户就得测试

邪恶的向导

提示:不要使用你不理解的向导代码

第7章 在项目开始之前

需求之坑

提示:不要搜集需求-挖掘他们
提示:与用户一同工作,以像用户一样思考
提示:抽象比细节活得更长久
提示:使用项目词汇表

解开不可能解开的谜题

提示:不要在盒子外面思考-要找到盒子

等你准备好

提示:倾听反复出现的疑虑-等你准备好再开始

规范陷阱

提示:对有些事情“做”胜于“描述“

圆圈与箭头

提示:不要做形式方法的奴隶
提示:昂贵的工具不一定能制作出更好的设计

第8章 注重实效的项目

注重实效的团队

提示:围绕功能、而不是工作职务进行组织

无处不在的自动化

提示:不要使用手工流程

无情的测试

提示:早测试,常测试,自动测试
提示:要到通过全部测试,编码才算完成
提示:通过”蓄意破坏“测试你的测试
提示:测试状态覆盖,而不是代码覆盖
提示:一个bug只抓一次

全都是写

提示:把英语当作又一种编程语言
提示:把文档建在里面,不要拴在外面

极大的期望

提示:温和的超出用户的期望

傲慢与偏见

提示:在你的作品上签名