读书之《程序员修炼之道:从小工到专家》九月第二篇

本博客为笔者阅读《程序员修炼之道:从小工到专家》的读书笔记九月第二篇,也是整个过程的第二篇,值得一提的是,每月两篇正好八篇,而本书正好八章,因此每一篇博客都将是对于对应章节的记录和感受描写

本篇仅包含对于本书第二章内容的感触

具体如下

第七节

在本节内容中,作者主要介绍了重实效的途径。注重实效,第一步是要避免不必要的重复。,使系统中的每一项知识都必须具有单一、无歧义、权威的表示。而做到它的就需要我们DRY –Don’t Repeat Yourself(不要重复你自己),既然如此我们就要知道,重复是怎样发生的:

1) 强加的重复

只开发者认为不可避免但其实有方法可以进行避免的重复

2) 无意的重复

顾名思义,是开发者没有意识到他们在重复信息。这个需要通过提高代码意识或者 CR 进行减少。

3) 无耐性的重复

开发者偷懒,因为重复可以让事情更容易。有时往往会遇速则不达,在这类重复面前我们应该更慎重。

4) 开发者之间的重复

同一个团队或者不同团队的几个人重复了同样的信息。需要一个统筹的人引导大家交流,提供一个中央区域,管理维护公共代码。

第八节 

正交性这个名词笔者第一次是在线性代数中听到,它常用于向量关系的判断和计算,也可以说,两条直线相交为直角,他们就是正交的,而这一概念被引用到计算机中,用于表示某些互相不依赖的代码块或者性质,正交这一特性会有很多好处,举例来说,如果两块代码正交,他们之间就互不影响,即如果出现bug需要调试,就不必去找正交块的问题,同时提高了生产效率,组件之间互不依赖,使得改变得以局部化。

同样地,如果一个项目的团队也保持正交性,那么每个人都是独立的个体,经营独立的任务,任务重叠部分较少,会更方便任务的划分以及责任分工。

第九节

本节中作者告诉我们,作为程序员如果某个想法是你唯一的想法,那其实这是很危险的,这意味着你在设计软件时思路很单一,比起多样性的发散思维,更容易出现bug和错误,在这种情况下如果出现了bug我们就需要更换其他的元件以配合这单一的思路,因此比起做到一半换工具,不如在代码开发的起初就多想想有没有其他的思路,这里笔者想起了高中学物理的时候,物理老师讲题目不止用一种思路或者一种解法,简单的一个追及相遇问题或者是板块问题,可能由于分析的不同公式使用的不同会有多种的解法,敲代码其实也是同理。

第十节

值得一提的是 本节的名字特别有意思,曳光弹,通过查阅笔者得知

曳光弹是一种装有能发光的化学药剂的炮弹或枪弹。发射后发出红色﹑黄色或者绿色的光。用来指示弹道和目标。曳光弹跟其他子弹弹头不同的是弹头在飞行中会发亮,并在光源不足或黑暗环境显示出弹道,协助射手进行弹道修正,甚至作为指引以及联络友军攻击方向与位置的方式与工具。
 了解了这个之后,更方便了理解作者所写的 在黑暗中是用机枪射击的例子
作者在这里写了两种不同的方式,即了解准确位置,通过射手的计算和经验判断进行目标打击,第二种方式是通过曳光弹,直接照亮环境,锁定目标进行射击,作者把代码比作了黑暗中发光的曳光弹,通常一个项目的开发是非常复杂的,如果只是一个模块一个模块的开发,我们可能直到最后才能确认项目运行情况,更好的做法是先抛系统再进行调试,这和建民老师课上所讲的分块进行编程有异曲同工之处,笔者以为,即在写程序时,进行分块,一部分一部分完成,最后拼接到一起,假设我们要写一个管理程序,增删改查的所有内容都可以分块进行,也体现了上面所提到的正交性。
第十一节
原型是在略细节的情况下,考虑走项目流程,它甚至不需要编码,可以用伪代码或者永便签/白板等制作模型
第十二节
 计算机语言会影响你思考问题的方式,以及你看待交流的方式。领域语言通常是为了简化流程,用于配置或者控制应用程序。DSL 可以理解为一个小型语言,它可以是扩展自已有语言。在设计一种 DSL 时,考虑可读性还是简单性时,主要权衡的应该是可扩展性和可维护性,因为通常大多数应用都会超出预期的使用期限。
 第十三节

估算结果怎么来呢。

首先需要确认你是否理解了需求所涉及的各个方面,这个是前置条件。

然后你需要建立系统模型,在这个系统中,把模型分拆成各个组件,然后给每个参数设置定一个值,最后根据模型计算一个时间。

 

posted @   Arkiya  阅读(23)  评论(0编辑  收藏  举报
相关博文:
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起