跳至内容
- 关心你的技艺
- 思考!你的工作
- 提供各种选择,不要找蹩足的借口
- 不要容忍破窗户
- 做变化的催化剂
- 记住大图景
- 使质量成为需求问题
- 定期为你的知识资产投资
- 批判地分析你读到的和听到的
- 你说什么和你怎么说同样重要
- 不要重复你自己
- 让复用变得容易
- 消除无关事物之间的影响
- 不存在最终决策
- 让曳光弹找到目标
- 为了学习而制作原型
- 靠近问题领域编程
- 估算,以避免发生意外
- 通过代码对进度进行迭代
- 用纯文本保存知识
- 利用命令Shell的力量
- 用好一种编辑器
- 总是使用源码控制
- 要修正问题,而不是发出指责
- 不要恐慌
- “Select”没有问题
- 不要假定,要证明
- 学习一种文本操纵语言
- 编写能编写代码的代码
- 你不可能写出完美的软件
- 通过合约进行设计
- 早崩溃
- 如果它不可能发生,用断言确保它不会发生
- 将异常用于异常的问题
- 要有始有终
- 使模块之间的耦合减至最小
- 要配置,不要集成
- 将抽象放进代码,细节放进元数据
- 分析工作流,以改善并发性
- 用服务进行设计
- 总是为并发进行设计
- 使视图与模型分离
- 用黑板协调工作流
- 不要靠巧合编程
- 估算你的算法的阶
- 测试你的估算
- 早重构,常重构
- 为测试而设计
- 测试你的软件,否则你的用户就得测试
- 不要使用你不理解的向导代码
- 不要搜集需求——挖掘它们
- 与用户一同工作,以像用户一样思考
- 抽象比细节活得更长久
- 使用项目词汇表
- 不要在盒子外面思考——要找到盒子
- 倾听反复出现的疑虑——等你准备好再开始
- 对有些事情“做”胜于“描述”
- 不要做形式方法的奴隶
- 昂贵的工具不一定能制作出更好的设计
- 围绕功能、而不是工作职务进行组织
- 不要使用手工流程
- 早测试,常测试,自动测试
- 要到通过全部测试,编码才算完成
- 通过“蓄意破坏”测试你的测试
- 测试状态覆盖,而不是代码覆盖
- 一次Bug只抓一次
- 把英语当作又一种编程语言
- 把文档建在里面,不要拴在外面
- 温和地超出用户的期望
- 在你的作品上签名