从chapter4至chapter6,围绕着构建过程的合作讨论构建之法,而合作与个人工作的区别却以一个微妙的问题为开端:阅读别人的代码有多难?

两人合作:(驾驶员与领航员)

合作要注意代码风格规范与设计规范,如语句分行便于单步执行、使用“匈牙利命名法”等等。这里有趣的一点是,书中认为goto为函数提供单一出口,有助于程序逻辑的清晰体现,但是一些从事教学的教授认为goto语句影响代码的可读性,尽量减少使用,二者均有一定道理。之所以如此注重代码规范,非常重要的一个因素就是错误处理往往需要项目80%的时间。

两人合作不同阶段(萌芽,磨合,规范,创造,解体)有着不同的技巧,如何影响对方没有绝对正确或错误的方法,只有合适不合适的问题;正确给予反馈,着重于反馈层次的最外层(行为和后果),不要贸然深入中间层(习惯和动机)和最内层(本质和固有属性)。

写程序的目的不是“为赋新词强说愁”,而是为了解决问题,所以我们要慎重使用这些语言的高级特性,尽量使用简洁的方法。软件开发则是一个社会性的活动,“破窗效应”提醒我们团队成员必须严格执行代码规范。

团队和流程:(乐团?特工队?社区?)

对于团队模式的叙述是我非常喜欢的部分,引用Michael Jordan的一句话“Talent wins games, teamwork wins championship.”,作者采用类比方式介绍了一些优秀的团队模式,解决紧迫性问题时需要SWAT模式,领域处于稳定成长阶段时需要Orchestra模式,秘密状态下的项目需要Skunk Work Team,还有个性敏捷的Jazz Band等等。

团队开发软件流程中,支持code-and-fix,原本我也疑惑为什么老师一直强调要让顾客尽早参与到项目中来,但是改进与变形的瀑布模型告诉我们正是模拟版本甚至是不成熟有残缺的版本,所以才需要收集反馈改进步骤,让用户及早介入、讨论、复审。这里叙述的RUP与之前的PSP相辅相成。

敏捷流程:

敏捷开发重计划、重沟通,这RUP和Six Sigma有一些相似之处。流程图如下:

燃尽图每天跟踪了三个时间值:实际剩余时间、预估剩余时间、实际花费时间。正如我们时常调侃的“ddl是第一生产力”“新时代特色爆肝主义”一样,这样的燃尽图是对我们的绝佳督促和进度参考。

Sprint/Scrum将项目的众多需求分而治之,强调短时间的迭代与多次迭代中的不断总结,这样让每个人都集中注意力解决自己的问题,又能为团队提出自主性的想法。预期说它是一种模式,不如把Agile认为是一股思潮或一种价值观。虽然有许多方法论与实践,但正如马克思主义原理的不败言论“具体问题具体分析”,敏捷流程永远不能脱离适用的范围。

Q: 读书时遗留一个问题,书中以“简明,易读,无二义性”为代码风格原则,这三者是否有先后顺序?当出现冲突时如何平衡?书中强调的“保持简明,让代码更容易读”是不是暗示“易读”是核心原则?

【读书笔记】构建之法(CH4~CH6)的更多相关文章

  1. 【读书笔记】iOS-方法声明

    编译的时候 ,编译器会把方法前面的IBAction替换成void,把属性前面的IBOutlet移除掉,因为这些都 只是Interface Builder的标志而已.这个IBAction方法会被UI控件 ...

  2. 【读书笔记】iOS-GCD-用法

    代码: -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { dispatch_async(dispatch_get_gl ...

  3. 读书笔记-构建高性能Web站点

    基本概念 带宽:通常说的带宽比如8M带宽,是指主机与互联网运营商的交换机之间的数据传输速度,因为数据链路层的流量是通过控制接收方实现的.而百兆网卡则是指网卡的发送速度为100Mbit/s,则是指网卡发 ...

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

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

  5. 《构建之法》第四&十七章读书笔记

     <构建之法>第四&十七章读书笔记 一.         前言 再次阅读<构建之法>,愈发被其中生动有趣的举例吸引.作为一本给予软件工程学生的书籍,其不以枯燥的理论知识 ...

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

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

  7. 《构建之法》CH5~6读书笔记 PB16110698 第九周(~5.15)

    这段时间我阅读了<构建之法>的大部分章节,包括个人技能.软件测试.用户体验和需求分析等相关内容.之前的个人作业和结对作业结束后,我们的工作重心终于转向了团队项目,作为团队中前端组的组长,我 ...

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

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

  9. week1读构建之法-读书笔记

    最开始听见杨老师说邹欣老师这个名字总觉得很熟悉,后来看见博客上老师的头像恍然大悟,原来机缘巧合已经在微博上关注邹老师许久,一直觉得邹老师是个很有意思的人,兴趣一定十分广泛,看了老师的书确实能感觉到邹老 ...

随机推荐

  1. bzoj2750Road——最短路计数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2750 以每个点作为源点,spfa跑出一个最短路图(不一定是树,因为可能很多条最短路一样长): ...

  2. sqlserver 截取字符串

    **/*******/*****/1399/* 我要取第3个'/'与第4个'/'中的内容,就是1399 create table ta( col varchar(100)) insert ta sel ...

  3. 【224】◀▶ IDL NetCDF 文件操作说明

    参考:I/O - NetCDF Routines —— NetCDF 操作函数 01   NCDF_OPEN 打开一个 NetCDF 文件. 02   NCDF_CLOSE 关闭一个 NetCDF 文 ...

  4. 方法名的string类型应用(补)

    string strClass = "stringConvertClass.test"; //命名空间+类名 string strMethod = "Method&quo ...

  5. mysql分页性能

    - select * from userinfo limit 20000,10  # 数据越往后越慢 - 索引表中扫: select * from userinfo where id in (sele ...

  6. 启动Android模拟器问题集锦

    1.新建AVD时,报错“no CPU/ABI system image available for this target”, 解决:在SDK Manager中下载System Image 2.Sys ...

  7. TypeScript完全解读(26课时)_11.TypeScript完全解读-类型推论和兼容性

    11.TypeScript完全解读-类型推论和兼容性 在一些时候省略指令,ts会帮我们推断出省略的类型的地方适合的类型,通过学习ts的类型推论了解ts的推论规则 类型兼容性就是为了适应js灵活的特点, ...

  8. git commit 提交不了 error: pathspec 'project'' did not match any file(s) known to git.

    1. 问题--使用git将代码提交到码云,使用到以下命令时: git commit -m 'init project' # 报错 error: pathspec 'project'' did not ...

  9. POJ3696【欧拉函数+欧拉定理】

    题意: 求最小T,满足L的倍数且都由8组成,求长度: 思路: 很强势的福利:点 图片拿出去食用更优 //#include<bits/stdc++.h> #include<cstdio ...

  10. Cocos2d-x-html5之HelloWorld深入分析与调试

    Cocos2d-x-html5之HelloWorld深入分析与调试 另:本章所用Cocos2d-x版本为: Cocos2d-html5-v2.1.1 http://cn.cocos2d-x.org/d ...