1、Care about your craft
2、Think about your work
3、Provide options,dont make lame excuses 不要找借口,不要说事情做不到,说明能够做什么
4、 Dont live with broken windows 当你看到糟糕的设计、错误的决策、恶心的代码时,修正它们
5、Be a catalyst for change 做变化的催化剂
6、Remember the big picture 不要太过注重于细节,大局观
7、Make quality a requirements issue 让质量变成需求问题,产生质量需求
8、Invest regularly in your knowledge portfolio 定期为知识资产投资
9、Critically analyze what you read and hear
10、Its both what you say and the way you say it 有方法的传达自己的想法
11、Dont repeat yourself DRY原则,复用!复用!
12、Make it easy to reuse 让人们方便的复用
13、 Eliminate effects between unrelated things 设计独立自足的组件
14、There are no final decisions 把每项决策视为写在沙滩上的,并为变化做好设计准备
15、Use tracer bullets to find the target 试验,并找到目标
16、Prototype to learn 原型制作,用于学习和总结经验
17、Program close to the problem domain
18、Estimate to avoid surprises
19、Iterate the schedule with the code 利用代码对进度表进行迭代
20、Keep knowledge in plain text
21、Use the power of command shells
22、Use a single editor well
23、Always use source code control
24、Fix the problem ,not the blame
25、Dont panic when debuging
26、“Select” isnt broken 在OS、或者三方库中很少发现bug,bug很可能在你的应用中
27、Dont assume it —— Prove it
28、Learn a text manipulation language 如果每天花很多时间处理文本,为什么不让计算机替你完成这些工作呢
29、Write the code that writes code 代码生成器能提高生产率,并有助于避免重复
30、You cant write perfect software
31、Design with contracts 用合约建立文档,并检验代码所做的事正好是它声明要做的
32、Crash early
33、Use assertions to prevent the impossible
34、Use exceptions for exceptional problems 将异常用于异常的问题,并暴露出来,而不是在某处吞掉
35、Finish what you start 只要可能,分配某资源的例程或对象也应该负责解除分配
36、Minimize coupling between modules 通过编写羞怯的代码,并应用得墨忒法则来避免耦合
37、Configure,dont integrate
38、Put abstractions in code,details in metadata
39、Analyze workflow to improve concurrency
40、Design using services 根据服务——独立的、在良好定义、一致的接口之后的并发对象——进行设计
41、Always design for concurrency
42、Separate views from models
43、Use blackboard to coordinate workflow
44、Dont program by coincidence 只依靠可靠的事物,注意偶发的复杂性,不要把幸运的巧合与有目的的计划混为一谈
45、Estimate the order of your algorithm 计算你的算法的阶
46、Test your estimates
47、Refactor early,refactor often
48、Design to test
49、Test your software,or your users will
50、Dont use wizard code what you dont understand
51、Dont gather requirements —— dig for them
52、Work with a user to think like a user 要了解应用实际上被如何使用,这是最好的办法
53、Abstractions live longer than details
54、Use a project glossary 创建并维护项目中使用的专用术语和词汇的唯一信息源
55、Dont think outside the box,find the box 遇到不可能解决的问题时,要确定真正的约束,确定盒子的边界
56、Start when you are ready 你的一生都在积累经验,不要忽视反复出现的疑虑
57、Some things are better done than described
58、Dont be a slave to formal method
59、Costly tools dont produce better designs 昂贵的工具不一定能制作出更好的设计
60、Organize teams around functionality
61、Dont use manual procedures 不要用手工流程,shell脚本会一次次的以同一顺序执行同样的指令
62、Test early ,test often,test automatically
63、Coding aint done till all the tests run
64、Use saboteurs to test your testing 通过蓄意破坏测试你的测试,故意引入bug,以检验测试能够抓住它们
65、Test state coverage,not code coverage 确定并测试重要的程序状态,只是测试代码行是不够的
66、Find bugs once
67、English(Chinese) is just a programming language 像你编写代码一样编写文档
68、Build documentation in ,dont bolt it on 与代码分离的文档不太可能被修正和更新
69、Gently exceed your users expectations 要理解用户的期望,然后给他们的东西多那么一点点
70、Sign your work 要对自己的作品有信心