程序员修炼之道---读书随笔3

元程序设计

细节会弄乱我们整洁的代码——特别是如果它们经常变化。每当我们必须去改动代码,以适应商业逻辑、法律或管理人员个人一时的口味的某种变化时,

我们都有破坏系统或引入新bug的危险。所以我们说“把细节赶出去!”把它们赶出代码。当我们在与它作斗争时,我们可以让我们的代码变得高度可配置和“柔软”——就就是,容易适应变化。

要用元数据(metadata)描述应用的配置选项:调谐参数、用户偏好、安装目录等等。元数据是数据的数据,最为常见的例子可能是数据库schema或数据词典。

要配置,不要集成

但我们不只是想把元数据用于简单的偏好。我们想要尽可能多地通过元数据配置和驱动应用:为一般情况编写程序,把具体情况放在别处——在编译的代码库之外。

将抽象放进代码,细节放进元数据

曳(yè)光弹

译著中对曳光弹的描述有点难懂,百科中的解释:曳光弹是一种装有能发光的化学药剂的炮弹或枪弹,用于指示弹道和目标。曳光弹在光源不足或黑暗中可显示出弹道,协助射手进行弹道修正,甚至作为指引以及联络友军攻击方向与位置的方式与工具。

这个类比也许有点暴力,但它适用于新的项目,特别是当你构建从未构建过的东西时。与枪手一样,你也设法在黑暗中击中目标。因为你的用户从未见过这样的系统,他们的需求可能会含糊不清。因为你在使用不熟悉的算法、技术、语言或库,你面对着大量未知的事物。同时,因为完成项目需要时间,在很大程度上你能够确知,你的工作环境将在你完成之前发生变化。

       经典的做法是把系统定死。制作大量文档,逐一列出每项需求、确定所有未知因素、并限定环境。根据死的计算射击。预先进行一次大量计算,然后射击并企望击中目标。然而,注重实效的程序员往往更喜欢使用曳光弹。

用曳光弹找到目标

曳光代码并非用过就扔的代码:你编写它,是为了保留它。它含有任何一段产品代码都拥有的完整的错误检查、结构、文档、以及自查。它只不过功能不全而已。

但是,一旦你在系统的各组件间实现了端到端(end-to-end)的连接,你就可以检查你离目标还有多远,并在必要的情况下进行调整。一旦你完全瞄准,增加功能将是一件容易的事情。

曳光开发与项目永不会结束的理念是一致的:总有改动需要完成,总有功能需要增加。这是一个渐进的过程。

曳光开发其实大家或多或少都在参与。新项目创建时搭建框架代码,逐渐为框架添加功能正是这样一个过程。我们会在框架中让关键流程能够运行,以检验新技术

在真实环境中的表现与预研的结果是否一致;检验整体设计是否有明显的性能问题;让用户尽早看到可工作的产品以提供反馈;为整个团队提供可以工作的结构与集成平台,大家只需要关心增加功能代码让框架更丰满。

曳光开发和原型模式有明显区别。原型中的代码是用过就扔的,寻求以最快的速度展示产品,甚至会采用更高级的语言。曳光代码虽然简约,但却是完成的,它拥有完整的错误检查与异常处理,只不过是功能不全而已。

时间: 2024-08-29 08:57:00

程序员修炼之道---读书随笔3的相关文章

程序员修炼之道---读书随笔1

终于开始读<程序员修炼之道>这本书了,初看这本书的名字,有点以前的道士修炼法术的意思,觉得很是好奇,作为一名程序员,该如何修炼我们自己呢? 这本书涵盖的主题从个人责任.职业发展,直到用于使代码保持灵活.并且易于改编和复用的各种架构技术.利用许多富有娱乐性的奇闻轶事.有思想性的例子 以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱. 编程技术就是程序员的手艺,你的程序就是你的艺术品.时刻关注自己的技艺,保持热情.保持好奇,争取做到富有专长而又多才多艺.有人说过这样一句话:“

程序员修炼之道---读书随笔2

熵是一个来自物理学的概念,指的是某个系统中的“无序”的总量.当软件中的无序增长时,程序员们称之为“软件腐烂”(software rot). 有许多因素可以促生软件腐烂.其中最重要的一个似乎是开发项目时的心理(或文化). 不要留着程序中的“破窗户”不修,低劣的设计,临时的糟糕的方案等等.而往往我们又面对着诸多的“现实”,没时间重构,重构风险大没资源测试. 可是我们会永远生活在“现实”里面,不可能有某一天万事具备.良辰吉日等着让你开始着手去修理这些“破窗户”. 我们可以借助自动测试等手段来帮助我们降

程序员修炼之道-读书笔记

在<程序员修炼之道>一书中,Dave和Andy告诉我们以一种我们能够遵循的方式编程.本书中提出了许多著名的哲学理论,总结如下: 不要容忍破窗户 当一个街区的某个窗户破碎,而且长时间没人修理时,那么其他窗户也会相继破碎,从而整个街区更甚整个城市都会被侵蚀.这就是有名的"破窗户理论".做软件也如此,如果出现问题而不及时修正,那么整个软件就会随之恶化.所以,不能容忍破窗户,没发现一个bug就得及时改正.即使没有足够的时间去修理,也要用木板钉住,将BUG代码注释,采取这些行动阻止进

程序员修炼之道-读书笔记续

投资知识财产       我们喜欢把程序员所知道的关于计算机技术和经验视为他们的知识资产,你的资产是有时效的资产,会随着新技术,语言和环境的出现而变得过时. 多交流且会交流       在与他人交流时,一定要了解听众,他们对你讲的什么感兴趣,他们想要什么.遇到程序bug时,不要一味的职责,而是修正问题,解决问题. 维持正交性        正交就是两个事物中一个发生变化,对另一个无影响,这就是所谓的正交性.正交的好处有两个,一个是提高生存率,另一个则是降低风险.让代码维持正交性,可以消除无关事物

读书笔记2014第4本:程序员修炼之道-从小工到专家(第七、八章)

第七章 在项目开始之前 36 需求之坑不为收集需求,挖掘它们.有一种能深入了解用户需求,却未得到足够利用的技术:成为用户.与用户一同工作,以像用户一样思考.描述需求文档时,要使用项目术语表.用WEB来收集和管理需求. 37 解开不可能解开的谜题遇到不可能解决的问题时,退一步问问自己如下问题:1)有更容易的方法吗?2)你是在设法解决真正的问题,还是被外围的技术问题转移了注意力?3)这件事情为什么是一个问题?4)是什么使它如此难以解决?5)它必须以这种方式完成吗?6)它真的必须完成吗? 38 等你准

程序员修炼之道_从小工到专家_读书分享

最近央视给我们连续分享了<大国工匠>,很是羡慕,嫉妒,恨.要知道我们程序员也是一名工匠,哈哈.最近用两天多的时间读了一本和工匠有关的书籍<程序员修炼之道-从小工到专家>这本书,现在分享给大家,因本人能力有限,拙劣之处请包涵. 从这本书的名字说起,这本书现在的名字体现不出来书中的主题内容,书的原名为<The Pragmatic Programmer>翻译为<注重实效的程序员>,看到这个题目想必大家对书的主题有个大概印象.这本书在编码问题,软件架构和设计,项目管

《程序员修炼之道》读书笔记

<程序员修炼之道>读书笔记 提供多种选择,不要找接口 出了问题后,要提出各种解决方案的选择,而不是找借口:不要说事情做不到,要说明接下来做什么来挽回局面: 不要容忍破窗户 我们看到过整洁.运行良好的系统,一旦窗户开始破裂,就相当迅速的恶化: 不要留着破窗户不修:发现一个bug就修复一个,如果没有足够的时间进行恰当的修理,就用木板先订起来:或许你可以先把代码注释起来,或是显示"未实现"的消息:采取某种行动防止进一步的损坏,并说明情形在你的控制之下: 投资知识资产 我们喜欢把程

《程序员修炼之道》读书笔记②

概述 花了几天时间看完了程序员修炼之道,有很多感悟,记录于此,供自己开发时参考,相信对其他人也有用. 值得一提的是,这本书写的非常好,很多大牛在走了很多弯路之后再读这本书都很感慨没有早些读. <程序员修炼之道>读书笔记① 弯曲,或折断 解耦与得墨忒耳法则 1.函数的得墨忒耳法则规定,某个对象的任何方法都应该只调用属于以下情形的方法:它自身:传入该方法的任何参数:它创建的任何对象:任何直接持有的组件对象. 2.委托服从得墨忒耳法则,从而减少了耦合. 元程序设计 1.元数据是关于数据的数据:要用元

《程序员修炼之道:从小工到专家》读书笔记

<程序员修炼之道>读书笔记 之所以选择这本书作为第一本书,是因为这本书描述了一些程序员编写大型项目时所应该遵循的最基本的原则和可以使用的最基本的工具.它没有描述某一种特定的语言.特定的算法,也没有推荐一种编程方法作为万灵药,而是介绍了实用主义的思想,并介绍了一整套方法论帮助程序员与团体避免错误.避免浪费无谓的时间,更有效地开发程序. 在此前的学习中,我所学习的知识往往是一个个点状的知识.学校安排了c语言.数据结构等课程,我自学过一点点cpp.python,甚至了解过一些web架构,但从来没有一