《程序员修炼之道》这本书后面一部分则是更深入、更具体、更细致地就程序员应该注意的事项做一些讨论,书中说的很多在过去的经历中都有较深的体会,同时也给了我很多启发。
以下是一些我感悟较深的点:

1、工匠与工具
    工匠在使用工具的过程中,二者互相磨合,工具甚至变成了工匠双手的延伸。这就好像我们学习与适应的过程。在学习初始阶段,我们先精心挑选我们的工具。然后在使用这些工具时,不断地熟悉,不断地适应,工具成为你的大脑的一部分,它能放大你的才干。
但是我们不能总局限于单一的工具,虽然有些工具看起来通用,但是当遇到一些特殊需求时,我们要像工匠学习,定期增加工具。就我自身而言,这方面我就做的不够好。我个人就属于习惯于一种后就不太愿意更改的人。这一点不是很好,我们要乐于超越工具(如IDE)施加的各种性质。
    2、纯文本
    纯文本有很多好处,首先纯文本格式不仅可以被机器理解,也是人可以理解的格式,这也就意味着它能够保存更久。
其次,纯文本格式具有简单性,它也更易于测试。我们可以很轻松的增加、修改测试数据,也可以轻松地分析回归测试输出的结果,或使用一些脚本工具进行彻查。
    3、源码控制系统
    我们应该总是使用源码控制系统。因为我过去没有进行过团队编程项目,对一些源码控制相关的工具也不是很了解。通过近期的认识,我愈发觉得源码控制系统非常重要。它能帮助你对比不同版本直接的对比,帮助你返回之前的版本等。
    团队项目,不论大小,都应该使用源码控制系统。虽然看起来有时候有些麻烦,但是养成习惯后对你整个项目都有非常大的帮助。
    4、调试bug
    我摘下了书中引用的这句话:
    “看着你自己的烦忧,并且知道不是别人、而是你自己一人所致
                                                                  ——索福克勒斯:《埃阿斯》”
    (1)接受事实
    首先我们要接受这个事实。Bug已经出现了,你要做的失去解决它。而调试就是解决问题,我们要据此发起进攻。
    (2)恰当的思维方式
    其次,恰当的思维方式非常重要。不要恐慌,恐慌不能解决任何问题。更不要浪费时间在觉得那不可能上,因为事实就是,这个程序已经错了。在学习C语言或者数据结构的时候,无论是平时上机实验,还是大作业,总会有或多或少的bug。而每当遇到bug,总是调试不出来时,我确实非常容易陷入焦虑情绪。因为在我自己看来,程序完全没问题啊。但是错误的运行结果又确确实实摆在眼前,只能硬调。
    (3)小心近视
书中还提醒我们要“小心近视”。因为有时bug可能是在你以为的地方几步远的地方。而如果总是陷在一个点中,就会像我有时调试bug一样,调试几个小时,结果发现只是一个小小的变量打错了。
    (4)再现bug
要真正解决bug,我们要有能力将bug再现,也就是说我们要知道bug是怎么出现的。只有知道它是怎么出现的,我们才能学会避免它。
    (5)橡皮鸭
    这个概念,是我在数据结构课在大佬们的讨论中第一次听说的。调试bug一个很有效的办法就是向别人解释你的代码,往往在你解释的过程中,你就能发现bug所在。因为bug出现一定是和你的逻辑有关的。如果我们能够从头按正确的逻辑梳理一遍代码,很大概率能发现代码的漏洞。
    (6)不要假定,要证明
    不要轻易下结论“这不可能”,不要轻易放弃任何微不足道的地方。不要理所当然地去假定,而应该去证明它。
    (7)让下次修复更容易
    修复完bug后,我们需要想想,我们可以做些什么,让下次修复更容易。比如书中提到的内建更好的测试挂钩,或是编写日志文件分析器。
    (8)早崩溃
    让程序崩溃是你的最佳选择。这句话虽然单看有些怪,但就程序而言,一个死程序带来的危害要远远小于一个有病患的程序。

软工读书笔记 week2的更多相关文章

  1. 软工读书笔记 week 9 ——《构建之法》

    软工读书笔记  week 9                 ——<构建之法> 最近的三周我们正式开始我们的项目.然后我也把<构建之法>中的相关章节再拿出来读了一番.以下是一些 ...

  2. 软工读书笔记 week 5 ——《构建之法》

    本周主要对<构建之法>中的一部分进行阅读. 一.软件与软件工程究竟是什么? 本书的概论部分就指出“软件 = 程序 + 软件工程”.而我们这门课的名字就叫“现代软件工程”.其实在上课之前,我 ...

  3. 软工读书笔记 week 8 —— 《疯狂的程序员》

    这次接着上一次的进度继续阅读,并将其中感悟较深的几点记录如下.      程序员是一个幕后工作者 书中绝影给医院写软件,而医生(用户)只是评价这个软件好不好用,而不会去评价写这个软件的程序员优不优秀. ...

  4. 软工读书笔记 week4 ——《黑客与画家》下

    因为时间有限,只对书中后半部分几个篇章进行了阅读.        一.另一条路       作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面 ...

  5. 软工读书笔记 week 1

    这次读书笔记主要是就<程序员修炼之道>这本书的前半部分做一些总结以及发表一些自己的看法. 本书前面的一部分主要是一些程序员应该在工作中时刻注意的事情,一些关键的信息如下: 1.处理问题的态 ...

  6. 软工读书笔记 week 7 ——《构建之法》

    总时长近两周的结对项目终于算是结束了,马上要重新开启团队项目.于是这几天决定对<构建之法>一书中与团队项目及需求分析有关的章节进行重点阅读,希望能够从中得到启发,并运用到接下来的团队项目中 ...

  7. 软工读书笔记 week 6 ——《疯狂的程序员》Part 1

    这本小说以主人公绝影上大学后初次接触编程开始讲起,这周主要看的就是绝影还在大学的那段经历,虽然故事背景很多年前,但很多地方仍然会引发我的共鸣. 第一个梦想 在“第一个梦想”一节讲了作业布置做一个通讯录 ...

  8. 软工读书笔记 week3 (《黑客与画家》上)

    一.何谓黑客? 黑客,在我们大多数普通人眼里,就是入侵计算机的人,通常还与干坏事挂钩.而书中告诉我们,这 并不是它的真正含义.而要想理解这本书,就要首先理解什么是黑客. 黑客这个词最初起源时,完全是一 ...

  9. 《代码大全2》读书笔记 Week2

    <代码大全2>第四.五章 第四章“关键的‘构建’决策”主要有以下三要点:1.每种编程语言都有优点和缺点,程序员应根据需要选择编程语言,尽量选择熟悉的语言以提高生产效率.作为一种表达工具,编 ...

随机推荐

  1. 【性能测试】:关于loadrunner11录制Chrome浏览器脚本的方法

    有些web端的程序只能通过chrome访问,如果用lr11录制的话,会抓不到包, 现在教一种方法,可以抓到包的,主体思路就是设置代理,让报文流量绕道走一下 一,在LR中的设置: 从菜单Tools-Re ...

  2. CentOS 开启安装EPEL YUM源

    我们用yum安装软件时,经常发现我们的yum源里面没有该软件,需要自己去wget,然后configure,make,make install,太折腾了. 其实,CentOS 还有一个源叫做 EPEL ...

  3. maven上传源码到私服

    上传源码 项目中采用了分模块的方式构建,直接将maven-source-plugin写到父pom中,尝试了很多次发现源码一直不能上传到私服中,纠结了很长时间才发现原来多模块项目和普通一个项目的配置是有 ...

  4. 使用minikube在本机测试kubernetes

    目录 简介 安装 Docker CE 安装 kubectl 安装 minikube 启动 minikube 启动 dashboard 启动一个服务 删除服务 参考 本文主要讲解 minikube(ku ...

  5. PTA (Advanced Level) 1020 Tree Traversals

    Tree Traversals Suppose that all the keys in a binary tree are distinct positive integers. Given the ...

  6. CentOS VNC

    CentOS Linux:1.需要安装的包:tigervnc,tigervnc-server 2.配置显示分辨率.桌面和用户:编辑 /etc/sysconfig/vncservers参考注释掉的最后两 ...

  7. hadoop学习笔记(二):简单启动

    一.hadoop组件依赖关系 二.hadoop日志格式: 两种日志,分别以out和log结尾: 1 以log结尾的日志:通过log4j日志记录格式进行记录的日志,采用日常滚动文件后缀策略来命名日志文件 ...

  8. C# 扩展方法一

    1. 何为扩展方法 扩展方法是C#3.0引入的语法特性,是一种特殊的静态方法.它使得我们能向现有的数据类型“动态”添加方法,而不需要创建行的派生类型.重新编译或直接修改原始类型的源代码. 注意扩展方法 ...

  9. 第9章 scrapy-redis分布式爬虫

    9-1 分布式爬虫要点 1.分布式的优点 充分利用多机器的宽带加速爬取 充分利用多机的IP加速爬取速度 问:为什么scrapy不支持分布式? 答:在scrapy中scheduler是运行在队列的,而队 ...

  10. WCF-netTcpBinding端口共享

    在同一台机器上一个端口在某时刻只能被一个应用程序占用.对于WCF服务来说,如果服务器上有多个服务并且这些服务寄宿在不同的应用程序中,我们需要某种途径来共享它们的端口.下面是一个示例来演示使用TcpBi ...