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

摘要:
前段时间,我花时间读了程序员培养的第一章。本章阅读笔记的前两部分如下:“重复的危害”和“正交性”密切相关。这是实用程序员工具箱中最重要的工具之一。务实的程序员倾向于使用追踪子弹。在评估过程中,将加深对项目所在世界的了解。

  前段时间抽空阅读了程序员修炼之道的第一章。从书中充满哲学的小故事,以及作者的领悟,受到了许多的启发。所以对这本书的兴趣便更加浓烈,静下心来仔细阅读。这两周,认真的阅读了此书的第二章:注重实效的途径。在软件开发的各个层面中,有多的提示和诀窍。有些想法已经几乎成为公理,另一些过程大家都在使用。可是没有人将这些系统的总结。而这一章,作者便将这些想法和过程集中在一起。下面是我阅读这一章的一些读书笔记

  头两节:“重复的危害”,“正交性”关系十分紧切。“重复的危害”提醒我们不要再系统各处对知识进行重复。“正交性”提醒我们不要把任何一项知识分散在多个系统组件中。

  重复性的危害:

          DRY原则:系统中的每一项指示都必须具有单一,无歧义,权威的表示。这个原则让我们对于软件开发更易于理解和维护。这是         注重实效的程序员的工具箱里最重要的工具之一。

          重复大体可以分为下列几种: 强加的重复、无意的重复、无耐性的重复、开发者之间的重复。强加的重复可以通过编写代码生成器,针对文本生成不同语言平台的代码。 尽量让低级的知识放在代码中,将注释保留      给其他高级的说明。建立文档到代码的生成机和语言问题解决。无意地重复原因来自信息结构的不规范。无耐性的重复究其原因就是一个字 懒。开发者之间的重复可以通过高层设计避免。

  正交性:两条直线相交成直角,两条直线互不相依,沿着某条直线移动,投影到另一直线上的位置不变。在计算机中,这个术语用来表示某种不相依赖性或是解耦性。如果两个或多个事物中的一个发生变化,不会影响其他食物,这些事物就是正交的

          正交性可以提高效率,降低风险

  下一节可撤销性 :不存在最终决策。为了达到可撤销性,需要灵活的架构,使用项CORBA技术能够讲项目某些部分与语言分割开

  接下来的两节也是相关的,“曳光弹”中讨论了一种开发方式,能让我们同时搜集需求、测试设计、并实现代码。“原型与便笺”告诉我们在曳光弹开发不适用的情况下,怎样使用原型来测试架构、算法、接口以及各种想法。

     曳光弹:先动手,然后观察各种反馈,立即改进。曳光弹方法适用于新的项目。注重实效的程序员往往更喜欢使用曳光弹。曳光开发与项目永不会结束的理念是一致的:总有改动需要完成,总有功能需要增加  这是一个渐进的过程。

     曳光代码方法有许多优点:用户能够及早看到能工作的东西、开发者构建了一个他们能在其中工作的结构、你有了一个集成平台、你有了可用于演示的东西、你将更能够感觉到工作进展。但是曳代码不能百分之百确定该去往何处的情形下使用这项技术。

    原型与便笺:原型制作与完全的制作对比成本低很多,举例轿车制作商可以为某种新车设计不同的原型,目的是测试轿车的具体方面-空气动力学,结构特征等。同样道理,软件产品也可以使用原型制作,利用不同材料制作原型,可以是白板上的图形、绘图工具绘制的产品图等等。但是,如果发现自己处于不能放弃细节的环境中,需要问自己是否采用该方法而转而使用曳光弹方法。

应制作原型的事物:

  • 架构
  • 已有系统的新功能
  • 外部数据的结构或内容
  • 第三方工具或组件
  • 性能问题
  • 用户界面设计
    原型制作中可忽略的细节:
    • 正确性:虚设数据
    • 完整性:提高有意义的事物
    • 健壮性:错误检查
    • 风格

制作架构原型:

  • 主要组件的责任是否得到良好定义?是否适当?
  • 主要组件间协作是否得到良好的定义
  • 耦合是否得以最小化
  • 你能否确定重复的潜在来源
  • 接口的定义和各项约束是否可接
  • 受每个模块再执行中能否访问其所需的数据?是否在需要时进行访问

   领域语言中作者给了一些关于计算机语言的适度的建议

   估算:学习估算,并将此技能发展到你对事物的数量级直觉的程度,你就能展现出一种魔法般的能力,确认他们的可行性。在进行估算的过程中,将会加深对程序所处的世界的理解。所有的估算都以问题的模型为基础,任何估算练习的第一步都是建立对提问内容的理解。理解提问的内容、建立系统的模型、把模型分解为组件、给每个参数指定值、计算答案、追踪自己的估算能力、估算项目进度,便是估算的大体步骤。

以上便是这几周阅读的笔记与感受,接下来的阅读相信作者能给我带来更多的启发与感悟。

免责声明:文章转载自《程序员修炼之道 从小工到专家读书笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OpenCV图像旋转算法Android开发:使用DialogFragment实现dialog自定义布局下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端UI 原型设计版本号1.0.0

1. 首页:(初步设想是类似网易云课堂的首页风格) 按钮 功能 登陆 进入登陆页面 注册 进入注册页面 搜索 (待讨论是否需要) 搜索相关课程并呈现 右侧标签 当鼠标移到标签的时候,会弹出次级标签 2. 移动鼠标到相应标签上, 会出现相应的次级标题, 点击次级标题可以进入学习界面 3. 登陆之后, 这里主要的变化在于右上角的...

《JavaScript面向对象编程指南》

第一章、引言 1.5 面向对象的程序设计常用概念 对象(名词):是指“事物”在程序设计语言中的表现形式。 这里的事物可以是任何东西,我们可以看到它们具有某些明确特征,能执行某些动作。 这些对象特征就叫做属性(形容词),动作称之为方法(动词)。 类:实际上就是对象的设计蓝图或制作配方。类更多的是一种模板,而对象就是在这些模版的基础上被创建出来的。 封装:主要...

全面理解js面向对象

前言 当今 JavaScript 大行其道,各种应用对其依赖日深。web 程序员已逐渐习惯使用各种优秀的 JavaScript 框架快速开发 Web 应用,从而忽略了对原生 JavaScript 的学习和深入理解。所以,经常出现的情况是,很多做了多年 JS 开发的程序员对闭包、函数式编程、原型总是说不清道不明,即使使用了框架,其代码组织也非常糟糕。这都是对...

结对第一次——疫情统计可视化(原型设计)

这个作业属于哪个课程 2020春W班(福州大学) 这个作业要求在哪里 作业要求 结对学号 221701418&221701435 这个作业的目标 某次疫情统计可视化 作业正文... 此页 其他参考文献... echarts 设计原型 原型 首页展示 NABCD模型 N(Need) 有一家统计网站每天都会提供一个对应...

Axure 工具的使用

Axure RP是一款专业的快速原型设计工具,Axure RP是美国Axure Software Solution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图、流程图、 原型和规格说明文档。作为专业的原型设计工具,它能快速、高效的创建原型,同时支持多人协作设计和版本控制管理。...

程序员修炼之道的提示们(1)

1. 关心你的技艺. 没错, 开发软件是一个工程, 但是个人的技艺并不会就此埋没在其中 2. 思考你的工作. 设法理解你面临的每个问题的内在本质; 首先抓住事实, 而不是照搬别人的说法. 3. 提供各种选择. 不找蹩脚的借口. 要为自己的过错负责, 而不是找一个蹩脚的借口, 那无法改变事实, 不要说做不到, 而要说能够做什么来挽回. 4. 不要容忍破窗户....