Practice Tips
Practice Tips
- 程序员修炼之道Tips集锦,时时细细领会
1、关心你的技艺(Care about your craft)
2、思考你的工作(Think! About your work)
3、提供选择而不是借口(Provide options, Don’t make lame excuses)
4、不要容忍破窗户(Don’t live with broken windows):实时重构,干掉低劣设计、错误决策、糟糕代码,发现一处干掉一处
5、做变化的催化剂(Be a catalyst for change):让人们瞥见未来,人们就会聚集在你周围
6、记住大图景(Remember the big picture):时刻观察周围发生的事情而不是你自己在做的事情
7、使质量称为需求问题(Make quality a requirements issue):现实世界不会让我们制作出完美的产品尤其是不会出错的软件:时间、技术和急躁都在合谋反对我们,不要过度修饰和过度求精而损毁完好的程序,让你的代码凭借自己的质量站立一会,它也许不完美,but don’t worry, 它不可能完美~
8、定期为你的知识资产投资(Invest regularly in your knowledge portfolio)
9、批判地分析你读到的和听到的(Critically analyze what you read and hear)
10、你说什么和你怎么说同样重要(It’s both what you say and the way you say it)
- 知道你要说什么
- 了解你的听众
- 选择时机
- 选择风格
- 让文档美观
- 让听众参加
- 做倾听者
- 回复他人
11、不要重复你自己(DRY-Don’t Repeat Yourself)
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 Surprise)
19、通过代码对进度表进行迭代(Iterate the Schedule with the Code)
- 通过代码开发的实际进度与包含的功能来对进度表重新迭代
20、用纯文本保存知识(Keep Knowledge in Plain Text)
- 获得自描述的数据流
21、利用命令Shell的力量(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、不要恐慌(Don’t Panic)
- 人很容易恐慌,尤其是在最后期限的到来时或正在设法找到bug的原因
- 实际的故障离你观察的地方可能还有几步远,并且涉及到许多其他的相关事物,要总是设法找到问题的根源而不是问题的特定表现
26、“Select”没有问题(“Select” Isn’t Broken)
- 总是要先考虑自身的原因
27、不要假定,要证明(Don’t Assume it - Prove It)
28、学习一种文本操纵语言(Learn a Text Manipulation Language)
29、编写能编写代码的代码(Write Code That Writes Code)
- IDE处理
30、你不可能写出完美的软件(You Can’t Write Perfect Software)
31、通过合约进行设计(Design with Contracts)
32、早崩溃(Crash Early)
- fail fast
33、如果不可能发生,使用断言确保(If It Can’t Happen, Use Assertions to Ensure That It Won’t)
34、将异常用于异常的问题(Use Exceptions for Exceptional Problems)
35、要有始有终(Finish What You Start)
- 获取资源的线程应该负责释放这个资源
36、使得模块之间的耦合减至最少(Minimize Coupling Between Modules)
37、要配置,不要集成(Configure, Don’t 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 Blackboards to Coordinate Workflow)
44、不要靠巧合编程(Don’t Program by Coincidence)
45、估算算法的阶(Estimate the Order of Your Algorithms)
46、测试你的估算(Test Your Estimates)
47、早重构,常重构(Refactor Early, Refactor Often)
48、为测试而设计(Design for Test)
49、测试你的软件,否则你的用户就得测试(Test Your Software, or Your Users Will)
50、不要使用你不理解的向导代码(Don’t Use Wizard Code You Don’t Understand)
- 代码生成器之类
51、不要搜集需求–挖掘它们(Don’t 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、不要在盒子外面思考-要找到盒子(Don’t Think Outside the Box - Find the Box)
56、倾听反复出现的疑虑-等你准备好再开始(Listen to Nagging Doubts - Start When You’re Ready)
- 当面对一项任务时候,如果反复感到疑虑,或是体验到某种勉强,要注意它。给它时间,疑虑可能会结晶成某种更为坚实的东西。
57、对有些事情“做”胜于“描述”(Some Things Are Better Done than Described)
58、不要做形式方法的奴隶(Don’t Be a Slave to Formal Methods)
59、昂贵的工具不一定能制作出更好的设计(Expensive Tools Do Not Produce Better Designs)
60、围绕功能组织团队(Organize Teams Around Functionality)
61、不要使用手工流程(Don’t Use Manual Procedures)
62、早测试,常测试,自动测试(Test Early. Test Often. Test Automatically)
63、要到通过全部测试,编码才算完成(Coding Ain’t Done ‘Til All the Tests Run)
64、通过“蓄意破坏”测试你的测试(Use Saboteurs to Test Your Testing)
65、测试状态覆盖,而不是代码覆盖(Test State Coverage, Not Code Coverage)
66、一个Bug只抓一次(Find Bugs Once)
67、把英语当作又一种编程语言(Treat English as Just Another Programming Language)
68、把文档建在里面,不要拴在外面(Build Documentation In, Don’t Bolt It On)
69、温和地超出用户期望(Gently Exceed Your User’s Expectations)
70、在你的作品上签名(Sign Your Work)