读书笔记week1——涂涵越
这次读书笔记主要是就《程序员修炼之道》这本书的前半部分做一些总结以及发表一些自己的看法。
本书前面的一部分主要是一些程序员应该在工作中时刻注意的事情,一些关键的信息如下:
1、处理问题的态度与责任。
这是在本书序言中就提到的,可见其重要性。处理问题的正确态度以及对自己的行为负责是无论什么职业的人都应该注意的,而对于程序员来说,又有其特定的指向。首先,作为程序员,不能害怕暴露弱点,要敢于先呈现出不完美的代码,然后再去寻求改进。其次,负责还要求不要把问题归咎于他人。对于可能遇到的问题,都要有预先的计划。 “猫吃了我的源码”之类的说辞还是不要出现的号。。
2、软件的熵理论
熵就是事物的无序程度。这就像就像“破窗户理论”,我们要对破窗户零容忍。如果此时对软件代码或者决策上的一个小问题容忍,很可能导致非常严重的结局,或者书中所说的“软件腐烂”。
3、灭火理论
灭火理论就是一个情形,消防员为了不弄脏地毯,在灭火前先在地毯上铺上垫子。这个理论我还是第一次听说,这在现实生活中不能理解。但在软件编写中很重要,不能因为deadline,就放低自己代码的标准。
4、石头汤
有时候换一种方式,也许就能获得自己想要的东西。通过“要是增加……可能就会更好”这一方式,可能会比直接去要求某一样功能会更好。
5、温水煮青蛙
这个就很常见了,就是告诉我们要观察周围的事情。特别是对于程序员来说,周围的一切永远在时刻变化。
接下来是一些更具体的内容。
1、让用户参与权衡
毕竟你的成品是要给用户使用的。
2、使质量成为需求问题
我很喜欢这个说法,编程就像绘画。先是勾勒全景,然后画背景,在描细节。然后对自己的画进行批判,如果不满意的画接着可能得重来。但编程的话,书里告诉我们要学会止步,因为代码不可能完美。先把不完美的代码呈现给用户,让用户的需求来改进它的质量。
4、知识投资
一是要定期投资,并且要多元化,不要全放在一个篮子里。因为你并不知道哪些知识在未来是最有用的。
5、交流
首先要知道自己想说什么,然后了解听众,把握时机,并且调整自己的风格,使之适应听众。以及还一个美观问题,也需要让听众参与。当然对于程序员来说,听众就是用户。
6、DRY-“Don’t repeat yourself”
减少重复。一是强行的重复。如注释问题,应该低级知识呈现在代码里,高级说明呈现在注释中。再就是一些无意的设计上的重复,比如结构的定义上,可以减少一些变量。还有就是无耐性的重复,比如拷贝代码。这一点我也很有体会,有时以为功能相似便去拷贝一份代码,结果改代码的时候出现了各种问题,最后还得反复调试,其实还不如重新写一份。
7、正交性
这个概念也是很新颖。运用了数学里的概念。正交即说明二者互相独立,可以独立地去修改其中的一部分。比如界面、数据库独立,我们可以单独修改一方。实现正交性就要无关事务的影响,这可以让代码更健壮。这一概念在团队合作上也很有用,将工作分区,一定程度上隔离,可以提高工作效率。这在代码上,具体也有避免相似的函数等措施。正交不仅便于测试,而且使代码具有可撤销性,即你可以通过很小的改动去撤销或修改某个功能。
8、曳光代码与原型制作
这一部分开始,书里的内容开始不是那么好理解。根据我的理解,曳光代码也可以看成是一个简单的、不完美的代码。很多时候,用户也不清楚自己真的需求。如果让他们及早看到未完成的产品,他们会因为能看到产品的进展而欣喜。就像晚上用曳光弹射击,我们可以知道距离目标还有多远,若总是停留在理论上的计算,很可能反而不能更快达到预期。
它与原型制作的区别在于,原型制作是用过就扔的,而曳光代码仍然是最终系统的一部分。比如我们用轻木、胶带做了一个新车模型,这可以看成是原型制作。原型制作可以帮助我们分析风险、学习经验。而如果以车来打比方,曳光代码至少是能开上路的车,虽然它和真正的产品差距有很大。曳光代码允许一定程度忽略正确性、完整性、健壮性以及风格。
读书笔记week1——涂涵越的更多相关文章
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- 《如何在大学里脱颖而出(How to Win at College)》读书笔记
<如何在大学里脱颖而出(How to Win at College)>读书笔记 图书简介 中文版: 英文版: 作者卡尔·纽波特(Cal Newport)于 2004 年6月以优等生荣誉学会 ...
- <读书笔记> 代码整洁之道
概述 1.本文档的内容主要来源于书籍<代码整洁之道>作者Robert C.Martin,属于读书笔记. 2.软件质量,不仅依赖于架构和项目管理,而且与代码质量紧密相关,本书提出一 ...
- TJI读书笔记16-异常处理
TJI读书笔记16-异常处理 概念 基本异常情形 异常的捕获 自定义异常 异常说明 捕获所有异常 栈轨迹 重新抛出异常 Java标准异常 使用finally 异常的限制 构造器 异常的匹配 其他乱七八 ...
- 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句&倒装句(Reduced Clauses、Inverted Sentences) 【完结】
[英语魔法俱乐部——读书笔记] 3 高级句型-简化从句&倒装句(Reduced Clauses.Inverted Sentences):(3.1)从属从句简化的通则.(3.2)形容词从句简化. ...
- 【英语魔法俱乐部——读书笔记】 2 中级句型-复句&合句(Complex Sentences、Compound Sentences)
[英语魔法俱乐部——读书笔记] 2 中级句型-复句&合句(Complex Sentences.Compound Sentences):(2.1)名词从句.(2.2)副词从句.(2.3)关系从句 ...
- 《高性能MySQL》读书笔记--锁、事务、隔离级别 转
1.锁 为什么需要锁?因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对表中同一行记录进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作进 ...
- 【Todo】【读书笔记】机器学习-周志华
书籍位置: /Users/baidu/Documents/Data/Interview/机器学习-数据挖掘/<机器学习_周志华.pdf> 一共442页.能不能这个周末先囫囵吞枣看完呢.哈哈 ...
- 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...
随机推荐
- Spring Security构建Rest服务-0801-短信验证码发送
实现短信验证码登录 开发短信验证码接口 校验短信验证码并登录 短信验证码和图片验证码开发思路类似: 1,我们访问一个controller 2,在controller里调用短信验证码生成接口生成验证码 ...
- 原来你一直写错了?!实力分享一波 CSS 使用的书写规范顺序与偏门又实用的样式...
我们在埋头写代码的时候,还要学会收集整理一些常用的代码小技巧,以便在工作时候,可以及时调取,提高工作效率. 今天,我把之前收集整理的一些CSS代码小技巧分享出来,供你参考学习,希望对你有帮助. 一.C ...
- Web服务端性能提升实践
随着互联网的不断发展,日常生活中越来越多的需求通过网络来实现,从衣食住行到金融教育,从口袋到身份,人们无时无刻不依赖着网络,而且越来越多的人通过网络来完成自己的需求. 作为直接面对来自客户请求的Web ...
- Go语言学习笔记六: 循环语句
Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...
- [C语言]类型限定词const解析
作为C90增加的一个受限类型关键字,const赋予了它修饰的变量一个新属性——不变性,如果一个变量声明中带有关键字const,则无法通过赋值.增减运算来修改该变量的值. 一.指针与const结合 co ...
- java主线程结束和子线程结束之间的关系
(一)Main线程是个非守护线程,不能设置成守护线程. 这是因为,main线程是由java虚拟机在启动的时候创建的.main方法开始执行的时候,主线程已经创建好并在运行了.对于运行中的线程,调用Thr ...
- InnoSetup打包时出现Interal error: CallSpawnServer: Unexpected response: $0.错误的解决办法
如果在使用Innosetup打包软件时,如果出现Interal error: CallSpawnServer: Unexpected response: $0.错误, 如下图: 可以查看 Innose ...
- css 去除移动端手指按下瞬间的类hover色块
在指定的a或者button 设置此CSS -webkit-tap-highlight-color:transparent;
- JavaScript引用类型和值类型
thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>t ...
- java中线程同步问题
先不多说,直接上个例子,著名的生产者消费者问题. public class ProducerConsumer { public static void main(String[] args) { Sy ...