序
注重实效的程序员有哪些特征
·早起的改造者/快速的改编者
·好奇
·批判的思考者
·有现实感
·多才多艺
提示1:Care About Your Craft
关心你的技艺
提示2:Think!About Your Work
思考!你的工作
第一章、注重实效的哲学
1、我的源码让猫给吃了
注重实效的程序员对他或她自己的职业生涯负责,并且不害怕承认无知和错误。
负责
责任是你主动承担的东西,你承诺确保某件事情正确完成,但你不一定能直接控制事情的每一个方面。出了尽你所能之外,你必须分析风险是否超出了你的控制,对于不可能做到的事情或是风险太大的事情,你有权不去为之负责。你必须基于你自己的道德准则和判断来做出决定。
提示3:Provide Options,Don’t MakeLame Excuses
提供各种选择, 不要找蹩脚的借口
2、软件的熵
提示4:Don’t Live with BrokenWindows
不要容忍破窗户
不要留着“破窗户”(低劣的设计、错误的决策、或是糟糕的代码)不修。发现一个就修一个。如果没有足够的时间进行适当的修理,就用木板把它钉起来。采取某种行动防止进一步的破坏,并说明情势在你的控制之下。
3、石头汤与煮青蛙
设计出你可以合理要求的东西,好好开发它。一旦完成,就拿给大家看,让他们大吃一惊
提示5 Be a Catalyst for Change
做变化的催化剂
提示6 Remenber the Big Picture
记住大图景
不要像青蛙一样。留心大图景。要持续不不断地观察周围发生的事情,而不只是你自己在做的事情。
4、足够好的软件
提示7:Make Quality a RequerementsIssue
使质量成为需求问题
5、你的知识资产
提示8:Invest Regularly in YourKnowledge Portfolio
定期为你的知识资产投资
目标
·每年至少学习一种新语言
·每季度阅读一本技术书籍
·也要阅读非技术书籍
·上课
·参加本地用户组织
·实验不同的环境
·跟上潮流
·上网
提示9:Critically Analyze What YouRead and Hear
批判地分析你读到的和写到的
6、交流
提示10:It’s Both What You Say and the Way You Say it
你说什么和你怎么说同样重要
·知道你想要说什么
·了解你的听众
·选择时机
·选择风格
·让文档美观
·让观众参与
·做倾听者
·回复他人
第二章 注重实效的途径
7 重复的危害
系统中的每一项知识都必须具有单一、无歧义、权威的表示
提示11: DRY dont repeat yourself
不要重复你自己
提示12:make it easy to reuse
让复用变得容易
8 正交性
提示13:Eliminate Effects BetweenUnrelated Things
消除无关事物之间的影响
如果你编写正交的系统,好处:提高生产率与降低风险。
设计
对于正交设计,有一种简单的测试方法。一旦设计好组件,问问你自己:如果我显著地改变某个特定功能背后的需求,有多少个模块会受影响,在正交系统中,答案应该是“一个”
编码
让你的代码保持解耦 不会没有必要地向其他模块暴露任何事情、也不依赖其他模块的实现的模块
避免使用全局数据
避免编写相似的函数
9可撤销性
提示14:there are no final decisions
不存在最终决策
要把决策视为是写在沙滩上的,而不要把它们刻在石头上,大浪随时可能到来,把他们抹去
10曳光弹
提示15:Use Tracer Bullets to Findthe Target
用曳光弹找到目标
曳光弹告诉你击中的是什么
曳光代码
构建从未构建过的东西时,与真正的子弹在相同的未知环境下工作,快速飞向目标得到即时反馈。
为了在代码中获得同样的效果,我们要找到某种东西,让我们能快速、直观和可重复地从需求出发,满足最终系统的各个方面的要求。
曳光开发与项目永不会结束的理念是一致的:总有改动需要完成,总有功能需要增加。
11 原型与便签
提示16:Prototype to Learn
为了学习而制作原型
构建原型的原因:为了分析和揭示风险,并以大大降低的代价、为修正提供机会。
如果发现自己处在不能放弃细节的环境中,就要问自己是否真的在构造原型,获取曳光弹方法更适合这种情况。
原型制作是一种学习经验,其价值并不在于所产生的代码,而在于所学到的经验教训。
怎样使用原型?
构建原型时,可以忽略:正确性、完整性、健壮性、风格。
12 领域语言
提示17:Program Close to the Problemdomain <