71
注重实效的程序员有哪些特征:
1,早期的采纳者/快速的改编者。具有技术和技术上的直觉,喜欢试验各种事物,给你一样新东西,很快就能把握它,并把它与你的知识的其它部分结合在一起。
2,好奇。
3,批判的思考者。
4,有现实感。会设法理解你面临的每个问题的内在本质。
5,多才多艺。尽力熟悉广泛的技术和环境,并且努力工作,以与各种新发展并肩前行。尽管你现在的工作也许只要求你成为某方面的专才,你却总是能够转向新的领域和新的挑战。
第一章 注重实效的哲学
注重实效的程序员的特征是什么? 能够越出直接的问题去思考,总是设法把问题放在更大的语境中,总是设法注意更大的图景。
注重实效的编程源于注重实效的思考的哲学。本章将为这种哲学设立基础。
我的源码让猫给吃了
注重实效的程序员对他自己的职业生涯负责,并且不害怕无知或错误,这肯定并非是编程最令人愉悦的方面,但它肯定会发生。
发生这样的事情,我们要设法尽可能职业地处理它们,这意味着诚实和坦率。我们可以为我们的能力自豪,但对于我们的缺点--还有我们的无知和错误--我们必须诚实。
软件的熵
破窗理论
石头汤与煮青蛙
足够好的软件
你的知识资产
经营你的资产
1,定期投资。
2,多元化,知道的不同的事情越多,就越有价值。
3,管理风险,
4,低买高卖,
5,重新评估和平衡
目标:
1,每年至少学习一种新语言
2,每季度阅读一本技术书籍
3,也要阅读非技术书籍
4,上课
5,参加本地用户组织
6,试验不同的环境
7,跟上潮流
8,上网
挑战:
1,这周就开始学习一种新语言。
2,开始阅读一本新书
3,出去和你的当前项目无关的人,或是其他公司的人谈谈技术。
第二章 注重实效的途径
重复的危害
重复是怎样发生的:
1,强加的重复,
2,无意的重复,
3,无耐性的重复,
4,开发者之间的重复,
第三章 基本工具
强力编辑
选一种编辑器,彻底了解它,并将其用户所有的编辑任务。如果你用一种编辑器进行所有的文本编辑活动,你就不必停下来思考怎样完成文本操作:必需的键击将成为本能反应。编辑器将成为你双手的延伸;键会在划过文本和思想时歌唱起来,这就是我们的目标。
文本操作
第四章 注重实效的偏执
何时使用异常
什么是异常情况
异常很少应作为程序的正常流程的一部分使用;异常应保留给意外事件。
第五章 弯曲,或折断
元程序设计
动态配置: 要配置,不要集成。
元数据驱动的应用:
将抽象放进代码,细节放进元数据。
好处:
迫使你解除你的设计的耦合,从而带来更灵活,可适应性更好的程序。
迫使你通过推迟细节处理,创建更健壮,更抽象的设计 -- 完全推迟到程序之外。
无需重新编译应用,你就可以对其进行定制。
编写单元测试
通过使测试代码易于找到,你是在给使用你代码的开发者提供两样无价的资源:
1,一些例子,说明怎样使用你的模块的所有功能。
2,用以构建回归测试,以验证未来对代码的任何改动是否正确的一种手段。
使用测试装备
不管你决定采用的技术是什么,测试装备都应该具有以下功能:
1.用以指定设置与清理的标准途径。
2.用以选择个别或所有可用测试的方法。
3.分析输出是否是预期(或意外)结果的手段。
4.标准化的故障报告形式。
第七章 在项目开始之前
需求之坑
完美,不是在没有什么需要增加,而是在没有什么需要去掉时达到的。
第一章 敏捷 -- 高效软件开发之道
敏捷开发宣言:
1,个体和交互胜过过程和工具
2,可工作的软件胜过面面俱到的文档
3,客户协作胜过合同谈判
4,响应变化胜过遵循计划
敏捷方法可以快速地响应变化,它强调团队合作,人们专注于具体可行地目标(实现真正可以工作的软件),这就是敏捷的精神。
它要求团队中的每一个人(包括与团队合作的人)都具备职业精神,并积极地期望项目能够获得成功,它并不要求所有人都是有经验的专业人员,但必须具有专业的工作态度 --每个人都希望尽最大可能做好自己的工作。
精辟概括:
敏捷开发就是在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。
敏捷工具箱
1,Wiki:用来协作,实现知识共享。
2,版本控制:
3,单元测试:用代码来检查代码。
4,自动构建:全自动化,持续集成。
第二章 态度决定一切
专业的态度应该着眼于项目和团队的积极结果,关注个人和团队的成长,围绕最后的成功展开工作。集中精力,你是为做事而工作。
实行代码复审,不仅有助于代码更好理解,而且是发现bug最有效的方法之一。
另一种防止代码难懂的重要技术就是单元测试。帮助你很自然地把代码分层,分成很多可管理的小块,这样就得到设计更好、更清晰的代码。
第三章 学无止境
如何跟上技术变化的步伐?
1,迭代和增量式的学习。每天计划用一段时间来学习新技术,它不需要很长时间,但需要经常进行。记下那些你想学习的东西。
2,了解最新行情。最新的博客列表请参考 pragmaticprogrammer.com
3,参加本地的用户组活动。
4,参加研讨会。
5,如饥似渴地阅读。
第四章 交付用户想要的软件
提早集成,频繁集成。
第六章 敏捷编码
良好的面向对象设计原则建议:应该编写内聚的代码,要保持代码条理清晰,告知,不要询问。最后,通过设计能够根据契约进行替换的系统,可以在不确定的未来中保持代码的灵活性。
Recent Comments