软工读书笔记 week2
《程序员修炼之道》这本书后面一部分则是更深入、更具体、更细致地就程序员应该注意的事项做一些讨论,书中说的很多在过去的经历中都有较深的体会,同时也给了我很多启发。
以下是一些我感悟较深的点:
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的更多相关文章
- 软工读书笔记 week 9 ——《构建之法》
软工读书笔记 week 9 ——<构建之法> 最近的三周我们正式开始我们的项目.然后我也把<构建之法>中的相关章节再拿出来读了一番.以下是一些 ...
- 软工读书笔记 week 5 ——《构建之法》
本周主要对<构建之法>中的一部分进行阅读. 一.软件与软件工程究竟是什么? 本书的概论部分就指出“软件 = 程序 + 软件工程”.而我们这门课的名字就叫“现代软件工程”.其实在上课之前,我 ...
- 软工读书笔记 week 8 —— 《疯狂的程序员》
这次接着上一次的进度继续阅读,并将其中感悟较深的几点记录如下. 程序员是一个幕后工作者 书中绝影给医院写软件,而医生(用户)只是评价这个软件好不好用,而不会去评价写这个软件的程序员优不优秀. ...
- 软工读书笔记 week4 ——《黑客与画家》下
因为时间有限,只对书中后半部分几个篇章进行了阅读. 一.另一条路 作者以他自己为例,在那个没人知道什么叫“软件运行在服务器时”的时代,他和朋友选择创业时,没有选择写传统的桌面 ...
- 软工读书笔记 week 1
这次读书笔记主要是就<程序员修炼之道>这本书的前半部分做一些总结以及发表一些自己的看法. 本书前面的一部分主要是一些程序员应该在工作中时刻注意的事情,一些关键的信息如下: 1.处理问题的态 ...
- 软工读书笔记 week 7 ——《构建之法》
总时长近两周的结对项目终于算是结束了,马上要重新开启团队项目.于是这几天决定对<构建之法>一书中与团队项目及需求分析有关的章节进行重点阅读,希望能够从中得到启发,并运用到接下来的团队项目中 ...
- 软工读书笔记 week 6 ——《疯狂的程序员》Part 1
这本小说以主人公绝影上大学后初次接触编程开始讲起,这周主要看的就是绝影还在大学的那段经历,虽然故事背景很多年前,但很多地方仍然会引发我的共鸣. 第一个梦想 在“第一个梦想”一节讲了作业布置做一个通讯录 ...
- 软工读书笔记 week3 (《黑客与画家》上)
一.何谓黑客? 黑客,在我们大多数普通人眼里,就是入侵计算机的人,通常还与干坏事挂钩.而书中告诉我们,这 并不是它的真正含义.而要想理解这本书,就要首先理解什么是黑客. 黑客这个词最初起源时,完全是一 ...
- 《代码大全2》读书笔记 Week2
<代码大全2>第四.五章 第四章“关键的‘构建’决策”主要有以下三要点:1.每种编程语言都有优点和缺点,程序员应根据需要选择编程语言,尽量选择熟悉的语言以提高生产效率.作为一种表达工具,编 ...
随机推荐
- 创建自己的加密货币MNC——以太坊代币(二)
创建一个基于以太坊平台的分红币MNC,根据持有的代币数量,进行分红的算法.github地址: https://github.com/lxr1907/MNC 1.使用以太坊根据比例换购token MNC ...
- 16.Generator函数的语法
1.简介 Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同. 执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机 ...
- SPSS学习系列之SPSS Statistics(简称SPSS)是什么?
不多说,直接上干货! IBM SPSS Statistics 为业务经理和分析人员提供解决基本业务和研究问题所需的核心统计过程.该软件提供的工具使用户能够快速查看数据.为其他测试拟定假设情况.执行澄清 ...
- PHP代码实现强制换行
1. 简单的,只能分2行: //$str:输入字符串: //$num:超过多少个字符后进行换行(换行后每行的最大字符数) function forceBlackString($str, $num){ ...
- Hadoop Metrics2
来源:Hadoop Metrics2 Metrics are collections of information about Hadoop daemons, events and measureme ...
- Mysql命令行访问
mysql -h localhost -u root -p12345 mysql -h 192.168.1.100 -u root -p12345 mysql -h 192.168.1.100 ...
- WebLogic 数据源密码加密
先启动域:
- OSI及TCP/IP的概念和区别
什么是TCP/IP协议 TCP/IP协议(Transfer Controln Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet ...
- <机器学习实战>读书笔记--朴素贝叶斯
1.朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法, 最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model, ...
- 【转】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。
检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 500.23 ...