`

程序员修炼之道

阅读更多

程序员修炼之道     

最近发现一本叫做《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
4
2
分享到:
评论
4 楼 aspnetdb 2010-03-15  
好久前写的一篇文章,再看一遍,仍然被原书中作者精妙的观点所震撼和感动。最喜欢的一句:Test Your Software, or Your Users Will.这一句太帅了。
3 楼 oliver_peng 2009-12-03  
Good points
2 楼 lynn995 2009-12-02  
1 楼 gurudk 2009-12-02  
这本书非常经典,虽然中文英文,读起来都有些生涩,但观点和总结的实践非常有价值。

相关推荐

    程序员修理之道

    程序员修理之道(kindle版本),适合kindle电子书阅读。 本书直击编程陈地,穿过了软件开发中日益增长的规范和技术藩篱,对核心过程进行了审视――即根据需求,创建用户乐于接受的、可工作和易维护的代码。本书包含...

    程序员修炼之路 从小工到专家

    经典著作,看完之后你就会明白,一个普通的程序员和一个优秀的程序员之间的巨大鸿沟

    Programming Pearls(2nd)

    一本可以提高你编程技巧的好书,程序员修炼必备! --------------------------------------- 历史上最伟大的计算机科学著作之一. 融深邃思想、实战技术与趣味轶事于一炉的奇书.. 带你真正领略计算机科学之美...

    程序员的修炼之道中文版第一章学习笔记

    听说程序员的修炼笔记很好,自己看的过程中,感觉很多还不懂,于是在看第一遍的时候将自己觉得第一遍可以的地方给记下来

    高效程序员敏捷开发修炼之道

    高效程序员敏捷开发修炼之道

    【高清完整pdf】高效程序员的45个习惯 敏捷开发修炼之道

    第1章 敏捷——高效软件开发之道 第2章 态度决定一切 1. 做事 2. 欲速则不达 3. 对事不对人 4. 排除万难,奋勇前进 第3章 学无止境 5. 跟踪变化 6. 对团队投资 7. 懂得丢弃 8. 打破砂锅问到底 9. 把握开发节奏 第...

    程序员的修炼之道-从小工到专家

    关于编程的思想,主要记叙了编程所需要掌握的主要思想,以及对你进行积极地引导

    敏捷开发修炼之道-成就高效程序员电子书汇总

    资源名称:敏捷开发修炼之道-成就高效程序员电子书汇总资源目录:【】abbr_9c1672d5517e8e959122038e37723887【】CodeIgniter【】java敏捷开发【】Scrum敏捷式开发团队培训【】应用Rails进行敏捷Web开发(中文版)第三...

    《单元测试之道Java版:使用JUnit》PDF 下载

    《单元测试之道Java版:使用JUnit》PDF 下载

    学C心得:大程序员修练之道

    这是我学C的心得! 这是我个人的心得! 希望对你有所帮助!

    zxing.java源码解析-senge-utils:常用工具类

    程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 ...

    zxing.java源码解析-maven-repo:Maven仓库

    程序员修炼之道 高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) 深入理解计算机系统 软件随想录 算法导论(麻省理工学院出版社) 离线数学及其应用 设计模式 编程之美 黑客与画家 编程珠玑 ...

    zxing.java源码解析-articles:文章

    •程序员修炼之道 •高效能程序员的修炼(成为一名杰出的程序员其实跟写代码没有太大关系) •深入理解计算机系统 •软件随想录 •算法导论(麻省理工学院出版社) •离线数学及其应用 •设计模式 •编程之美 •黑客...

    Pragmatic Unit Testing (单元测试之道)

    《Paagmatic Starter Kit(程序员修炼三部曲)》系列之二 《Pragmatic Unit Testing (单元测试之道)》PDF教程+SRC

    项目管理修炼之道

    详细描述了项目管理的流程,适合要转入项目管理的程序员

    Practices of an Agile Developer 中文版 敏捷开发修炼之道

     本书简明实用、见解深刻,总结了高效程序员在开发过程中的45个个人习惯、思想观念和方法,有助于开发人员在开发进程、编码工作、开发者态度、项目和团队管理,以及持续学习等5个方面积极修炼。通过学习这些内容,...

    程序设计思想修炼 每个程序员必备的书籍

    编程之道.pdf 编程的那些事儿.doc 编码的奥秘.pdf 代码大全.pdf 二十三种设计模式.chm 人月神话.pdf

    单元测试之道Java版

    程序员修炼三部曲丛书包含了四本书,介绍了每个注重实效的程序员和成功团队所必备的一些工具。 注重实效的程序员都会利用反馈来指导开发,并驱动个人的开发流程。编码的时候,最有用的反馈来自于“单元测试”。

Global site tag (gtag.js) - Google Analytics