《代码大全2》读书笔记 Week 1
《代码大全2》第一、二、三章
隐喻思维在西方是一个热门的话题,隐喻的认知功能在各个学科正受到越来越多的重视,依照我的理解,其实就是以众所周知或者理解主体熟悉的事物为符号去将新事物、新概念具象化,与打比方的认知方式有同工异曲之妙。在《代码大全2》第二章,作者Steve McConnell主要列举了4种针对软件工程的隐喻:书法(写作代码)、耕作(培养系统)、牡蛎养殖(系统生长)、建造新建筑(建造软件)。作者认为前两者已无法、或者说从来都不能准确描述软件工程,书法暗示软件开发是一项代价昂贵的试错过程,而耕作大大低估了开发者对软件构建的自主控制。而后两种隐喻得到作者较大的认可。
牡蛎养殖隐喻的本体是增量式开发,也就是在开发前期先生成一个尽量简单、但能运行的版本,不必接受真实的输入或对数据进行处理,重点在构造软件的整体框架以支撑逐渐被完善,也就是“生长”的系统。根据个人经验,这种开发方式对于较大的工程有很大裨益,可以让开发者对整个软件的结构有比较清晰的认识并降低修改的成本。最后一种隐喻——建构软件本质上是适当的多层次规划,它强调“因地适宜”,根据软件工程的类型和用户的需求等等做出多个层次、循序渐进的规划。
我非常赞成这一章中智慧工具箱的提议。学习更多的语言和分析方法可以防止我们在遇到问题时不必要地浪费时间。
第三章用了一整个章节来阐述构建软件的前期工作,如需求分析和架构设计等,的必要性和重要性。书中让我很有共鸣的一个原则是令发现错误的时间尽量接近引入错误的时间,因为错误在开发过程中会引发链式效应,令后期修复的代价不断积累。另一个让我印象深刻的是作者对前期需求分析和后期应对需求变更的建议。开发者和客户都会在与软件日积月累的接触中不断地调整自己的认知和相应的需求, 所以前期不能让预设的需求束缚住构建过程,有必要留有余地,而在构建过程中,只接受最有价值的新需求。同时,使用能适应变更的开发方法,例如演进原型法和演进交付法能够大幅提升对需求做出的响应的能力。
《代码大全2》读书笔记 Week 1的更多相关文章
- 代码的未来读书笔记<二>
代码的未来读书笔记<二> 3.1语言的设计 对Ruby JavaScript Java Go 从服务端client以及静态动态这2个角度进行了对照. 这四种语言因为不同的设计方针,产生了不 ...
- 《第一行代码 android》 读书笔记:找出当前界面对应的Activity
在android开发中找出当前界面对应的Activity,步骤如下: 新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate()方法,通过getC ...
- 《Linux命令行与shell脚本编程大全》- 读书笔记1 - 基本的bash shell 命令
这本书买了好久了,除了刚到手的那几天翻看了一下以外,竟然到今天都没有看过.突然想要写一个shell脚本,发现什么也不会,是时候开始学习了,今天先把最简单的一章再看一遍顺便做一些笔记,明天继续后面的! ...
- 【代码大全2 学习笔记】ADT 抽象与封装
ADT abstract data type 抽象数据类型 要理解面向对象编程,就要先理解ADT这个概念.不懂ADT的程序员开发出来的类只是名义上的"类"而已--只是单纯的把一些相 ...
- 《Linux命令行与shell脚本编程大全》- 读书笔记3 - 理解shell
当用户登录终端的时候,通常会启动一个默认的交互式shell.系统究竟启动哪个shell,这取决于用户配置.一般这个shell都是/bin/shell.默认的系统shell(/bin/sh)用于系统sh ...
- 《Linux命令行与shell脚本编程大全》- 读书笔记2 - 更多的bash shell命令
更多的bash shell命令 想检测进程,需要熟悉ps命令的用法.ps命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息.默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户 ...
- 《Linux命令行与shell脚本编程大全》读书笔记
第一章:初识Linux 1.linux可划分为四个部分:内核.GNU工具.图形化桌面环境.应用程序 2.内核主要负责:系统内存管理.软件程序管理.硬件设备管理.文件系统管理 3.内核的系统内存管理,有 ...
- 《代码大全》阅读笔记-33-个人性格(personal character)
很多好的编程做法都能减轻你的大脑灰质细胞(指脑力)的负担. 将系统"分解",是为了使之易于理解("设计的层次"). 进行审查.评审和测试正是为了减少人为失误.如 ...
- 《代码大全2》读书笔记 Week8
这一周博主阅读了<代码大全2>第11章至第13章,第三部分——"变量"就结束了,第四部分作者将转入语句的讨论. 第十一章作者详细阐述了变量名的有效命名规则,第十二和十三 ...
- 《代码大全2》读书笔记 week 7
博主终于继续更<代码大全2>了 (*´・ω・`)⊃,课上老师一再强调读书笔记要写出自己的心得不能简单摘抄,所以我现在基本上只会写一下自己在阅读过程中印象深刻或者有发散思考的地方,字数可能 ...
随机推荐
- 2018-2-13-C#-复制列表
title author date CreateTime categories C# 复制列表 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23:3 +0 ...
- Nginx配置参数详解参考示例
user nobody; worker_processes 2; events{ worker_connections 1024; } http{ #设置默认类型为二进制流 default_type ...
- python处理文件某行的固定位置
1.打开文件 2.按行循环 3.处理固定行 with open('file/Aa.txt') as f: for line in f: print(line[2:12]) 可以这样处理的原因是,lin ...
- Hadoop的配置文件
hadoop-env.sh:脚本中所用到的环境变量,以运行Hadoop mapred-env.sh:脚本中所用到的环境变量,以运行mapreduce yarn-env.sh:脚本中所用到的环境变量,以 ...
- docker 报错端口被占用 sqlserver 占用80端口
本想开启个容器,却发现有程序居然占用了我的80端口 C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response fr ...
- 英语单词deprecated
deprecated 来源——fdisk /dev/sdb [root@centos65 ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is depr ...
- LeetCode算法题
1.给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 时间复杂度待优化 class Solution { public int findLength(int[] A, in ...
- Tortoise git账号记住密码
方法一: 本地git仓库目录下,找到 .git/config ,然后打开增加: [credential] helper = store 这样只有该目录下的git操作不用每次输入用户名和密码,换一个目录 ...
- EAM(Enterprise Asset Management)企业资产管理系统
EAM (Enterprise Asset Management)的缩写,EAM系统是指企业资产管理系统. EAM系统是在资产比重较大的企业,在资产建设.维护中减少维护成本,提高资产运营效率,通过现代 ...
- vue打包配置发布路径
目的:配置路径,让打包后的dist在本地可以打开. 方法:修改build文件夹下边的的webpack.dev.conf.js文件,找到devServer下边的publicPath,这个来源于confi ...