《程序员修炼之道:从小工到专家》阅读笔记01
《程序员修炼之道:从小工到专家》阅读笔记01
第一章 注重实效的哲学
- 注重实效的程序员的特征:是他们处理问题、寻求解决方案时的态度、风格、哲学。设法把问题放在更大的语境中,设法注意更大的图景对所做的每件事情负责,接受变化,拥抱变化,理解工作的语境。广泛的知识和经验基础交流
- 我的源码让猫给吃了:在所有弱点中,最大的弱点就是害怕暴露弱点。为自己的行为负责。对我们的无知和错误,应该诚实、坦率。预期到超过自己能力范围的风险,可以不必承担,若没有预期到已经发生,则必须承担。提供各种选择,不要找蹩脚的接口
-
任何谈话可以先预演一遍,预知一下结果不要说做不到,要想有什么解决方案足够好的软件欲求更好,常把好事变糟(李尔王)影响我们控制质量的因素:时间、技术、急躁缺乏职业素养的做法:1)无视用户的需求, 一味的给程序增加新特性,或一次一次的润饰代码2)许诺不可能兑现的时间标度3)为赶上最后期限而消减基本的工程内容。
-
范围和质量应该作为系统需求的一部分规定下来:使质量称为需求问题给用户的东西,要及早让他们使用,他们的反馈常常会吧你引向更好的最终解决方案
如果不懂得何时止步,绘画会迷失在绘制中(不要因为过度修饰和过于求精而毁损完好的程序)交流:我相信,被打量比被忽略要好讲清楚自己想要说的内容(可以写出大纲、撰写文档)了解你的听众(了解他们需要什么)选择时机选择风格(让你的风格适合你的听众)让文档美观(你的主意很重要,让他们以美观的方式传递到你的听众)让听众参与,做倾听者,回复他人,你说什么和你怎么说同样重要。
第二章 注重实效的途径
- 重复的危害:可靠的开发软件、并让我们的开发更易于理解和维护的唯一途径,是尊徐我们称之为 DRY的原则:系统中的每一项知识都必须具有单一、无歧义、权威的表示。< 不要重复你自己 >在两个或更多地方表达同一事物时,若果你改变其中一处,你必须记得改变其他各处重复范畴:1)强加的重复:开发者觉得他们无可选择 ------ 环境似乎要求重复2)无意的重复:开发者没有意识到他们在重复信息开发过程中,会因为性能原因而选择违反 DRY原则,这经常会发生在需要缓存数据,以避免重复昂贵的操作。诀窍是:使影响局部化。3)无耐性的重复:开发者偷懒,他们重复,因为似乎那样更容易。时间压力:驱使最优秀的人走捷径的力量一种最容易检测和处理的重复形式,此时需要你接受训练,并愿意为避免以后的痛苦而预先花一些时间4)开发者之间的重复:同一团队(或不同团队)的几个人重复了同样的信息最难检测和处理的重复处理此问题的最佳方式:鼓励开发者相互进行主动的交流(论坛,交流组)
-
正交性:如果两条直线相交成直角,他们就是正交,比如坐标轴。用向量的术语说,这两条直线互不影响。沿着某一条直线移动,你投影到另一条直线的位置不变。非正交系统的改变与控制更复杂我们要设计自足的组件:独立,具有单一、良好的定义的目的和。正交系统的优点:1)提高生产效率改动得以局部化,开发时间和测试时间降低正交的途径还能够促进复用若果对正交的组件进行组合,生产率会有相当微妙的提高2)降低风险正交的途径能降低任何开发中固有的风险,有问题的代码区域被隔离开使系统更健壮,正交系统很可能得到更好的测试不会与特定的供应商、产品、平台紧绑在一起,在工作中应用正交原则的几种方式:1)项目团队2)设计3)工具箱与库( EJB,面向方面编程 AOP)4)编码5)测试6)文档:坐标轴是内容合表现形式
-
可撤销性如果某个想法是你唯一的想法,在没有什么比这更危险的事情了。< 不存在最终决策 >每当有两种可能结果的牙合反应发生时,宇宙就会被克隆。在其中一个宇宙中个,事件发生,另一个宇宙中,事件不发生。薛定谔的猫:在一个封闭的盒子中有一只猫,还有一个放射性粒子,这个粒子有 50%的机会裂变成两个粒子,若果发生裂变,则猫被杀死;如果没有,则猫没有事。那么,猫是死是活?根据薛定谔的理论,答案是”都是“。只有打开盒子时,你才知道你在哪一个宇宙里。
-
曳光弹:< 用曳光弹找到目标 >曳光代码方法的优点:1)用户能够及早看到能工作的东西2)开发者构建了一个他们能在其中工作的结构3)你有了一个集成平台4)你有了可用于演示的东西5)你将更能够感受到工作的进展
-
估算:在进行估算的过程中,你将会加深对你的程序所处的世界的理解。通过学习估算,并将此技能发展到你对食物的数量级有直觉的程度,你就能展现出一种魔法般的能力,确定他们的可行性< 估算,已避免发生意外 >进行估算时,要注意解答问题的语境(精确 / 大概)1)多准确才足够准确2)估算来自哪里:已问题模型为基础3)理解提问内容4)建立系统的模型5)把模型分解为组件6)给每个参数指定值7)计算答案8)追踪你的估算能力9)在被要求进行估算时说什么
个人感受:
第一章中我最感同身受的是在所有弱点中,最大的弱点就是害怕暴露弱点。我本人就是一个害怕暴露弱点的人。喜欢把强势的一面表现出来而把弱点隐藏起来,从平时的练习就可以看出,我是一个容易逃避的人,面对自己的弱点,面对自己的错误,我总是喜欢去逃避。虽然我也知道逃避解决不了任何问题,但是还是控制不了自己的去逃避。
但是从开始接触程序,我害怕暴露缺点弱点的问题得到了很大的改善。因为毕竟如果你不不去改正这一个Bug,你不去直面他,这个程序跑不起来,你的作业工作交不了差。其实我们每一个人都害怕失败,害怕那一个个的Bug,可是你终将面对他,解决它。
所以我认为不要害怕失败,也不要害怕那红色的警示。当你没有勇气面对它时,他是拦路虎,但当你鼓起勇气面对它时,他却只是纸老虎。