从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. 给DataTable中添加一行数据

    一.如果该DataTable有两列,列的名称是Name,Age,且该DataTable的名称是dt; DataRow dr = dt.NewRow(); dr["Name"] = ...

  2. TCP连接状态变化

    TCP连接状态变化 参考文章:TCP连接的状态详解以及故障排查 TCP建立连接--三次握手 CLOSED:起始状态,无任何连接. LISTEN:服务端建立socket之后需要listen进入LISTE ...

  3. 九、myeclipse开发背景保护色设置

    window->preferences->Editors->Text Editors->Background color 背景颜色向你推荐: 色调:85.饱和度:1 2 3.亮 ...

  4. AngularJS系统学习之$watch(监控)

    在scope的内置的所有函数中,用的最多的可能就是$watch函数了, 当你的数据模型中某一部分发生变化时,$watch函数可以向你发出通知. 你可以监控单个对象的属性,亦可以监控需要经过计算的结果( ...

  5. Locked Treasure

    题意: 有一宝箱,宝箱上有一些锁,有n个人,每个人分管一些钥匙(每个锁对应无数个钥匙), 现给出n,m 求问至少需要多少锁才能存在一种钥匙分配方案使得: 1.至少m个人才可以打开锁. 2.任选m个人一 ...

  6. CF-799A

    A. Carrot Cakes time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  7. CF-807A

    A. Is it rated? time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  8. python常用第三方库(转载)

    Python标准库与第三方库详解(转载) 转载地址: http://www.codeweblog.com/python%e6%a0%87%e5%87%86%e5%ba%93%e4%b8%8e%e7%a ...

  9. java集合框架之HashMap和Hashtable的区别

    参考http://how2j.cn/k/collection/collection-hashmap-vs-hashtable/692.html#nowhere HashMap和Hashtable的区别 ...

  10. Linux下更改mysql版本

    想要更改linux的mysql版本,并不需要重装系统重新选择mysql版本,只需要删除掉原来的mysql然后在安装新的就可以啦 (谨记:一定要做好数据库备份) 详情请参照:大牛博客 over!over ...