注重实效的程序员不仅要完成工作,而且要完成的漂亮
序
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只抓一次
全都是写
提示:把英语当作又一种编程语言
提示:把文档建在里面,不要拴在外面
极大的期望
提示:温和的超出用户的期望
傲慢与偏见
提示:在你的作品上签名