程序员修炼之道

第一章 注重实效的哲学

(1)为自己承诺的项目进度负责
(2)保持代码编写整洁,设计良好,不要留着瑕疵不修,那会导致代码越来越差
(3)注意周围发生的事情
(4)编写当前足够好的软件(就可以交付给用户了)而不是能在未来达到完美的软件(没有必要,而且用户没有那么多等待时间)
(5)管理知识资产和管理金融资产一样重要
  • 定期投资(每年学习一门语言,每季度看一本技术书,上课,参加本地用户组织,订阅期刊等)
  • 多元化(多掌握不同的技术)
  • 管理风险(在保守和风险之间权衡)
  • 低买高卖(预判一个新兴技术是否会变成潮流,虽然这很困难)
  • 重新评估和平衡(适应技术的变更)
(6)了解听众,用他们感兴趣和理解的方式介绍自己的工作
  • 选择时机
  • 选择风格
  • 让文档美观
  • 让听众参与
  • 做倾听者
  • 回复他人

第二章 注重实效的途径

(1)避免无意义的重复
  • 强加的重复(这个很难避免)
  • 无意的重复
  • 无耐性的重复
  • 开发者之间的重复
(2)编写正交的系统,降低代码之间的耦合度
(3)所有在编写代码时做出的决策都不是固定的,所以代码要尽量有低的耦合度
(4)先构造端到端的可使用代码(曳光弹),再对它加以完善(增加功能)
(5)通过构造原型也可以检验一些问题,和曳光弹不同,原型用过就扔,不考虑出错和健壮性等
(6)靠近问题领域编程,甚至可以为特定的领域编写有特定语法的语言
(7)对整个项目进行估算,以避免发生意外

第三章 基本工具

(1)纯文本用于保存知识是比其他编程语言要好的,虽然它会多占存储资源,计算代价也很大
(2)多学习shell语言,对于某些工作,它比IDE更好用,IDE虽然所见即所得,但是也限制了用户能进行的操作
(3)使用合适的编辑器并熟悉它(就用sublime吧)
(4)源码控制,使用github
(5)对程序的调试要抱着解决问题的想法,而且要先假设自己当前写的代码出错了
(6)掌握一门文本操纵语言(比如perl)
(7)用代码生成器节约重复工作的时间

第四章 注重实效的偏执

(1)按合约设计(看不懂)
(2)如果程序有错,让他崩溃,而不要继续运行下去
(3)在程序中加入断言,检测并提醒那些绝不因该发生的事
(4)把异常处理用于异常情形中,和错误区分开来(比如取文件,文件应该在但不在,是异常;不知道是否在然后不在,是错误)
(5)要合理地分配及释放资源

第五章 弯曲,或折断

(1)用得墨忒耳法则使代码耦合度变低,这样子改动一个模块不会影响太多的其他模块,但是这样子也会使系统性能受损,所以要进行权衡
(2)使用元数据使程序高度可配置
(3)使用并发来减少对时间的依赖
(4)用mvc架构分离模块
(5)用一个区域协调不同的事实和因素,又使他们相互独立

第六章 当你编码时

(1)不要靠巧合编程
(2)估算算法的速率
(3)重构是为了解决(重复,非正交设计,过时的知识,性能)等问题,重构的时候要保持谨慎
(4)编程过程中要测试
(5)要理解向导(IDE提供的代码生成器),而不是仅仅会使用它

第七章 在项目开始之前

(1)建立需求文档
(2)当发现难题时,解决真正的约束,而不要被那些自己想当然的约束束缚住
(3)启动新项目时要准备好再做,但不要拖延
(4)编写程序规范就是把需求规约到程序员能够接管的程度
(5)不要成为形式方法的奴隶

第八章 注重实效的项目

(1)构建一个注重实效的团队
(2)把能自动化的工作都自动化
(3)注重测试
(4)内部文档(技术文档)和外部文档(用户手册)好好写
(5)不仅要和用户交流来达到他们的期望,还要做的比他们的期望好一点
(6)为自己写的代码署名,并由此督促自己严格要求自己

推荐阅读更多精彩内容

  • 前言 编程不存在某种最佳解决方案,我们应该注重失效,在拥有足够广博的背景和经验基础上,以保证能在特定情况下选择好的...
    白桦叶阅读 1,002评论 0 0
  • 学习最好的方式,是有个好师傅。他根据你的不同阶段,教导你不同的技能,循序渐进;师傅不单教你练功,还会教你做人,使你...
    寻海阅读 1,665评论 5 21
  • 书很薄,只有两百来页,但是内容不少。首次阅读觉得只能领悟其中一二。翻译得挺生硬,将就着看。 整本书都是在讲注重实效...
    heaven_touch阅读 149评论 0 0
  • Care About Your Craft. 关心你的技艺 Think!About Your Work. 思考!你...
    Aprilcat阅读 197评论 0 3
  • 坐高铁动车去上班的人总会思念家乡的昨日,昨日的美好成了今日思念的痛。 银贵荡尿盆 仿佛时间并没有这么快,仿佛每天天...
    月渡长虹阅读 184评论 9 7