代码大全读书笔记 Part 1
简单的看了前言,印象最深的还是这本书崇尚“绝不注水”的原则。现实生活中,不仅仅有注水牛肉,瘦肉精的猪肉,很多书籍也是东拼西凑来的内容,不注水的厚书,是十分令人期待的。
第一章:欢迎进入软件构建的世界
软件工程的流程在敏捷开发之前有固定的模式:定义问题,需求分析,规划构建,软件架构,详细设计,编码与调试,单元测试,集成测试,集成,系统测试,保证维护。当然,每一步你都可以找到相关的书籍专门的讲述。
我的理解:软件构件主要的产物是源代码,编写源代码的工程师的素质对软件构建影响很大。在构建活动中,不同程序员的生产效率的差距是10倍-20倍。由此看来,5%的神话是很实际的内容,当然这5%的优秀程序员对“如何进行构建”的理解程度,决定了他的优秀程度,95%的程序员都是码农。
第二章:用隐喻来更充分的理解软件开发
隐喻是用比喻的方式来描述软件领域各种特定的现象和事物,使用隐喻的方法叫做建模(modeling),物理学中气体分子的撞球理论,光的波动理论都用比喻来形容对一个事物的理解。计算机中也可以用隐喻来帮助人们更好的理解软件开发的问题。
1973年,Charles Bachman(图灵奖获得者中比较特殊的一个。Bachman基本上是在工业界里,而没有在学术界里作过研究或教职工作)在图灵奖演说中用日心说和地心说来形容计算机时代的变化,因为1973年,数据处理正在从“以计算机为中心”的观点向“以数据库为中心”的观点转变,现在越来越多的公司使用云计算厂商提供的服务,数据处理都“云化了”,我们生在其中,看不清,总结不明。10后,回头看看,或许豁然开朗。
隐喻和算法的不同就在于算法告诉你怎么做,而隐喻是告诉你如何更好的理解编程,写出更好的代码。或许需要问一个最简单的问题:软件开发时什么?各个大牛都用不同的比喻解释了一下,还是觉得Fred Brooks(《人月神话》作者,1999年图灵奖得主)说像耕田,捕猎的比喻好。
如果把软件开发比喻成耕田,那么不能期待系统能够像种子一样,春天播下,秋天收获,中间不能忽略的一步是“系统生长”,和生长相关的术语:“增量的”, “迭代的”, “自适应的”, “演进的”,慢慢的就有了《软件工程管理原理》这本书介绍的演进式交付,它很大程度上奠定了敏捷开发方法的基础。
当然,建一个狗屋忘记开一个门可以很快修复,建帝国大厦忘记搭配电梯系统会怎么样呢?所以软件构建的过程需要很多的智慧。
代码大全读书笔记 Part 1的更多相关文章
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...
- C#小常识集锦(一)--《更锋利的CSharp代码》读书笔记
❀.采用类似匈牙利命名法为控件命令,对于其他变量申明则不需要了 e.g. Button btnAdd; e.g. TextBox txtUsername; e.g. ListBox lstFileNa ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记1
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] 第 3 章 用 JavaScri ...
- 简单使用Git和Github来管理自己的代码和读书笔记
原文链接:http://my.oschina.net/bxxfighting/blog/378196 先注册github.com的账号官方网站: https://github.com/ 注册界面, ...
- 《梦断代码》读书笔记第0篇——“软件时间”、“死定了”、“Agenda之魂“
第0章 软件时间 在未读这本书前,刚看到名字觉得是本讲代码的书,后来老师说是一个个的故事,这引起了我的兴趣,于是我便速速开始了第0章的阅读,读完一遍大概能读懂在讲什么,可能由于是译过来的书,书里面一 ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记4
5.2.2 让瀑布流动起来 打好基建之后,就需要写JavaScript代码.首先如果数据不够显示一屏幕的情况,就用新数据来补足它,在补充的时候是根据4列中最矮的那一个为优先补充,因为高矮尺寸一般只有在 ...
- 《梦断代码》读书笔记 part3
第六章:搞掂设计方案 备份很重要. 必须从小项目开始,而且永远不要期望它变大,如果你这么想,就会做过度设计,把它想象得过于重要,更坏的情况是,你可能会被自己想象中的艰难工作所吓到.所以要从小 处起步, ...
- <<代码大全>>阅读笔记之一 使用变量的一般事项
一.使用变量的一般事项 1.把变量引用局部化 变量应用局部化就是把变量的引用点尽可能集中在一起,这样做的目的是增加代码的可读性 衡量不同引用点靠近程度的一种方法是计算该变量的跨度(span) 示例 a ...
随机推荐
- Tcp参数优化
net.core.netdev_max_backlog = 400000 #该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目. net.core.opt ...
- Scrapy框架学习(四)爬取360摄影美图
我们要爬取的网站为http://image.so.com/z?ch=photography,打开开发者工具,页面往下拉,观察到出现了如图所示Ajax请求, 其中list就是图片的详细信息,接着观察到每 ...
- rest webapi 返回数据
webapi可以直接返回一个对象,也可以返回json 一.返回一个对象例子 [System.Web.Mvc.AllowAnonymous] [System.Web.Http.HttpGet] publ ...
- Firebird 日期时间
查询当前时间: 1.使用内置系统变量 select current_timestamp from rdb$database 2.使用now字符串转换 select cast('NOW' as time ...
- nodejs时间工具类
/** * * @fmt 格式化字符串 * @Date 为需要格式化的日期 * * 示例:format(new Date(),'yyyy-MM-dd hh:mm:ss'); * 返回值为字符串 */ ...
- Newtonsoft.Json 全部配置
需要在序列化时候,忽略掉某些字段,对Newtonsoft.Json进行全局配置,如下: 1. 自定 ContractResolver public class MyContractResolver : ...
- Java基础(七)常用类
一.Math类 1.Math类介绍 Math类属于java.lang包下面,里面包含用于执行基本数学运算的方法,如初等指数,对数,平方根和三角函数,该类被final修饰. 常用字段: 1.E 表示自然 ...
- 2019 Java面试题
马上又是一个金九银十的招聘旺季,小编在这里给大家整理了一套各大互联网公司面试都喜欢问的一些问题或者一些出场率很高的Java面试题,给在校招或者社招路上的你一臂之力. 首先我们需要明白一个事实,招聘的一 ...
- Git版本控制工具(1)
学习Git的最佳资料网站: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/ 这 ...
- NOIP2017:逛公园
Sol 发现\(NOIP2017\)还没\(AK\)??? 赶紧改 考场上明明打出了\(DP\),没时间了,没判环,重点是没初始化数组,爆\(0\) \(TAT\) 先最短路,然后\(f[i][j]\ ...