程序员修炼之道
最近发现一本叫做《The Pragmatic Programmer/程序员修炼之道》的书,用了一周左右读完,启发很大,
在这里晒一下自己的读书笔记,谈不上去粗取精,只是给没有时间详细读此书的朋友们参考参考,如有不足,欢迎指教。
注重实效的哲学 / A Pragmatic Philosophy
1. Provide Options ,Don’t Make Lame Excuses./ 提供各种选择,不要找蹩脚的借口。
负责的态度。出了问题,要承担责任。
2. Don’t Live with Broken Windows / 不要容忍破窗户。
在这里破窗口指:低劣的设计、错误决策、或是糟糕的代码。发现就要马上修正,即使现在没有时间进行适当的修理,也要用木板把它钉起来,防止造成进一步破坏。
3. Be a Catalyst for Change / 做变化的催化剂
读者可以自己google “石头汤的故事”,此处变化的催化剂就是故事中的士兵。
4. Remember the Big Picture / 记住大图景
不要忽略小的症状,大多数软件灾难都是从微不足道的小事情开始的,常常是小事情的积累破坏了士气和团队,要留心大图景。
5. Know When to Have a Stop / 知道何时止步。
代码也许不完美,但是不要难过担心,它不可能完美。
6. 知识上的投资总能得到最好的回报。 -----------本杰明.富兰克林
如他所说,要定期为自己充电,为自己进行资产投资。
7. It’s Both What You Say and the Way You Say It. / 你说什么和你怎么说同样重要。
除非你能够有效的与他人交流,否则就算你用友最好的主意、最漂亮的代码、或是最注重失效的想法,最终也会毫无结果。
注重实效的途径 / A Pragmatic Approach
8. DRY – Don’t Repeat Yourself. / 不要重复你自己
无论是因为环境、自己的无意识、懒惰还是不同开发者之间造成的重复,无论是代码还是注释,都要竭力避免,否则对于以后项目的重构都要带来难以置信的工作量。
9. Make It Easy to Reuse / 让复用变得容易。
你所要做的是要营造一种环境,在其中要找到并复用已有的东西,比自己编写供容易。
10. Eliminate Effects Between Unrelated Things / 消除无关事务之间的影响
简单说来就是高内聚,低耦合。要养成不断批判对待自己代码的习惯,打造正交的系统,提高生产效率、降低项目重构时崩溃的风险。
11. There’re no final decisions. / 不存在最终的决策。
为你的系统设计灵活的架构,做好关键决策变化的准备。简单的例子就如:
系统数据库由SQL-Server变更为Oracle数据库,系统的代码就可能重新编写。
12. Use Tracer Bullets to Find the Target. / 用曳光弹找到目标
在需求不明确时,用所有确定的因素搭建一个临时框架,最快速的把产品呈现在用户眼前。
13. Estimate to Avoid Surprises. / 估算,以避免发生意外。
估算是一种能力,你可以估算项目的进度,你可以知道那些子系统需要优化,而哪些可以暂时放在一边等等。
基本工具/ The Basic Tools
14. GUI 好处和坏处
好处: WYSIWYG---What You See Is What You Get.
坏处: WYSIAYG ---What You See Is All You Get.
15. Use the Power of Command Shells / 利用命令shell的力量
通过使用命令Shell,你会惊讶它能是你的生产效率带来怎样的提高。
16. Use a Single Editor Well / 用好一种编辑器
选一种编辑器,彻底了解它,并将其用于所有的编辑任务。不用停下来思考怎样完成文本操作:必须的键击将成为本能反应,编辑器将成为你双手的延伸;键会划过文本和思想时唱起歌来。当然,要确保此编辑器要能在你使用的所有平台上使用。
17. Always Use Source Code Control / 总是使用源码控制
进步远非由变化组成,而是取决于好记性。不能记住过去的人,被判重复过去。
18. Fix the Problem , Not the Blame / 要修正问题,而不是发出指责
Bug是你的过错还是别人的过错,并不是真的很有关系。它仍然是你的问题。
19. Don’t Panic / 不要恐慌
就算你有个神经质的老板或客户在你的脖子后面喘气,也不要惊慌,稳定心态找出问题的根源。
20. Don’t Assume it – Prove it / 不要假定,要证明
当面对某个让你吃惊的Bug时,你必须重新评估你确信不疑的”事实”,少一些假定,多一些证明。
21. Learn a Text Manipulation Language / 学习一种文本操作语言
我们每天几乎都在使用文本操作语言,与其他语言相比,许多想法都可以通过它简单的实现。
22. Write Code That Writes Code / 编写能编写代码的代码
如果想避免重复订的打字,是自己免于腕部劳损综合征,那么试一试写一个代码生成器吧。
注重实效的偏执/Pragmatic Paranoia
23. You Can’t Write Perfect Software. / 你不可能写出完美的软件。
在计算机技术简短的历史中,没有人曾经写出过一个完美的软件。你也不大可能成为第一个。别把时间和经历浪费在追逐不可能实现的梦想上。
24. If It Can’t Happen, Use Assertions to Ensure That It Won’t ./ 如果它不可能发生,用断言确 保它不会发生。
25. Use Exceptions for Exceptional Problems. / 将异常用于异常的问题。
为了避免遭受经典的意大利面条式代码的所有可读性和可维护行问题的折磨。巧妙的使用异常,将大大简化代码的逻辑。
26. Finish What You Start. / 要有始有终
此提示适用于处理资源分配及相关的操作(如文件读写、事务、内存、线程、窗口等),退出程序时要释放资源。
弯曲,或折断/ Bend, or Break
27. Minimize Coupling Between Modules / 使模块之间的耦合减至最少
编写极可能遵守的墨忒尔法则的代码
28. Put Abstractions in Code, Details in Metadata. / 将抽象放进代码,细节放进元数据
元数据(metadata)是关于数据的数据,是对任何对应用进行描述的数据。最常见的例子可能是数据库schema或数据字典。
29. Configure, Don’t Integrate / 要配置,不要集成
目标就是把我们的系统变得高度可配置,诸如算法,数据库产品,界面风格之类都作为配置选项供选择配置。
30. Analyze Workflow to Improve Concurrency. / 分析工作流,以改善并发性。
采用UML活动图的方式,通过分析工作流,处理并发事务,优化事务流程。
31. Design Using Services / 用服务进行设计
我们需要的不是组件,而是服务---位于定义良好的、一致的接口之后的独立开发的对象。
32. Always Design for Concurrency. / 总是为并发进行设计
在设计时考虑了并发,到时我们就可以更容易地满足可伸缩性或性能需求。
33. Separate Views from Models. / 使视图与模型分离
MVC设计模式的核心思想。
34. Use Blackboards to Coordinate Workflow. / 用黑板协调工作流
关于黑板,我的理解还不够,感觉上讲的不是很清楚。希望读者自己可以查一下。粗略的理解黑板是一个类似于”对象论坛”系统,所有需要交互的对象都放在此处,他们动态的互相交互信息。
当你编码时/While You Are Coding
35. Don’t Program by Coincidence. / 不要靠巧合编程。
要深思熟虑后编程,不要被目前无错、可运行的代码欺骗,知道每行代码的用处。
36. Estimate the Order of Your Algorithms. / 估算你的算法的阶
Then Test Your Estimates. / 测试你的估算。
注重实效的程序员会设法既考虑理论问题,又考虑实践的问题。
37. Refactor Early , Refactor Often. / 早重构,常重构
代码需要演化: 它不是静态的事物。
38. Test Your Software, or Your Users Will. / 测试你的代码,否则你的用户就得测试。
你对于软件测试的态度,决定了软件的质量。
39. Don’t Use Wizard Code You Don’t Understand. / 不要使用你不理解的向导代码。
因为向导代码最终也会成为你的代码,不懂得向导代码的意思,意味着你不懂自己的代码。
40. Work with a User to Think like a User. /与用户一同工作,以像用户一样思考。
开采需求的过程也是与用户群建立和谐的关系、了解他们对你正在构建的系统的期许和希望的时候。与用户一起坐下来讨论,他们真实的需求。
41. Abstractions Live Longer than Details. / 抽象比细节活的更长久。
关注抽象,避免掉入“只是增加一个新特性”的漩涡。
42. Use a Project Glossary. / 使用项目词汇表
如果用户和开发者用不同的名称至同一个事物,或是更糟,用同一名称指不同事物,这样的项目很难取得成功。
43. Use Saboteurs to Test Your Testing. / 通过“蓄意破坏”测试你的测试。
指定一个项目破坏员,其职责就是取源码树的一份单独的副本,故意引入Bug,并证实测试能抓住它们。
44. Treat English as Just An0ther Programming Language. / 把英语当作又一种编程语言。
通过良好的英语形成良好的文档,在通过实效性原则,把文档应用于代码之中。
以上44条是我从书中摘抄的一些内容,并加些自己的理解,希望对想要成为高效程序员的朋友们有些启发。
本篇内容均为作者认真整理,转载请表明出处(http://aspnetdb.iteye.com)。谢谢。
原书封面:
- 大小: 21.9 KB
分享到:
相关推荐
《程序员的修炼之道-从小工到专家》这本书深入探讨了编程领域的核心思想,旨在帮助程序员提升技能,逐步成长为行业专家。编程思想是编程者必备的基石,它涵盖了问题解决、设计模式、算法优化等多个方面。以下是一些...
读书笔记:程序员修炼之道从小工到专家
《程序员修炼之路 从小工到专家》这本书显然是针对软件开发领域从业人员的,尤其是那些希望从初级程序员成长到行业专家的读者。书中无疑会详细探讨普通程序员与优秀程序员之间技能、知识、经验以及思维方式上的差异...
程序员修理之道(kindle版本),适合kindle电子书阅读。 本书直击编程陈地,穿过了软件开发中日益增长的规范和技术藩篱,对核心过程进行了审视――即根据需求,创建用户乐于接受的、可工作和易维护的代码。本书包含...
《程序员修炼之道》这部经典作品,以其独特的视角和实践指导,帮助程序员在职业生涯中获得成长与提升。 本书英文原名"The Pragmatic Programmer",由Andrew Hunt和David Thomas合力著成,已经成为程序员不可或缺的...
该书非常不错,对程序员的整个思维体系进行了一个总结。
一本可以提高你编程技巧的好书,程序员修炼必备! --------------------------------------- 历史上最伟大的计算机科学著作之一. 融深邃思想、实战技术与趣味轶事于一炉的奇书.. 带你真正领略计算机科学之美...
《程序员修炼之道》是一本备受推崇的编程领域经典著作,英文原版名为"The Pragmatic Programmer",由Andrew Hunt和David Thomas共同撰写。这本书旨在帮助程序员提升技能、提高工作效率,并在软件开发过程中培养出更...
阅读《程序员修炼之道》等专业书籍,可以为程序员提供宝贵的指导和启示。通过积极参与社区讨论、紧跟最新的技术动态、并将理论知识应用于实践项目中,程序员可以不断提升自己的技能和视野,确保自己在快速变化的IT...
听说程序员的修炼笔记很好,自己看的过程中,感觉很多还不懂,于是在看第一遍的时候将自己觉得第一遍可以的地方给记下来
9. **测试与调试**:《程序员修炼之道:从小工到专家》中涵盖了测试和调试的技巧,帮助程序员提高代码质量。 10. **软件架构**:随着经验的积累,阅读《架构整洁之道》、《微服务架构设计》等书籍,可以帮助理解...
本书名为《高效程序员的45个习惯 敏捷开发修炼之道》,由Venkat Subramaniam和Andy Hunt两位作者共同撰写。书中所提到的45个习惯,不仅涉及软件开发过程、编程和调试工作,还包括了开发者的个人态度、项目和团队管理...
《程序员修炼之道》则是一本面向已经掌握编程机制但对实际开发流程还不是完全自信的程序员。书中不仅涵盖了编程技术,更强调了软件开发中的其他方面,比如架构设计,帮助程序员提升到更高的层次。 《计算机程序的...
最后,《程序员修炼之道.pdf》是一本关于程序员个人成长和职业发展的书籍。它可能涵盖了从技术技能提升到团队协作、项目管理、持续学习等多方面的内容,旨在帮助程序员提升全面素质,成为一名更专业、更有价值的...
与《代码大全》不同的是,《程序员修炼之道》更偏向于提供软件开发过程中可能遇到的问题解决策略,以及个人职业规划的指导。书中分享了许多实用的建议,包括如何高效利用工具、优化工作流程、管理项目风险等,这些都...
《程序员修炼之道——从码农到大师》(英文原版名为"The Pragmatic Programmer"),是一本备受推崇的IT行业经典书籍,旨在帮助程序员提升技能、优化思维,并成长为更高效的专业人士。这本书由Andrew Hunt和David ...
压缩包中的“新建文件夹”可能包含了关于这些主题的书籍和工具,例如《程序员修炼之道》可能会指导如何提升个人技能和职业素养,《Effective Java》则深入讲解了Java编程的最佳实践。此外,可能还有关于产品管理的...
- **《程序员修炼之道》**:本书关注程序员的职业发展和个人成长,提供了许多实用的建议,如如何保持代码整洁、如何提高工作效率等。 - **适用人群**:所有级别的程序员,特别是那些希望提升编程技能和个人职业素养...
"程序员修炼之道"可能是在暗示使用Ghost是提高程序员工作效率的一种方法,他们可以通过快速备份和恢复系统来节省时间。"英文"则表明Ghost的相关资料和使用可能主要是英文资源。 在压缩包子文件的文件名称列表中,...