从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. bzoj4827

    FFT+数学 先开始觉得枚举c就行了,不过我naive了 事实上c是确定的,通过化简式子可以得出一个二次函数,那么c就可以解出来了. 然后把a翻转,fft一下就行了 难得的良心题 #include&l ...

  2. Empire Strikes Back

    题意: 给定$K$个数字,求最小的正整数$n$,使得$\prod_{i=1}^{K}{a_i !} | n!$ 解法: 注意到$$\sum_{p为质数}{1/p} = O(loglogn)$$, 这样 ...

  3. ESXI中 Linux虚拟机不重启扩展磁盘

    1.首先对虚拟机进行编辑设置 硬盘大小进行修改到80G: 2.在Linux系统中查看磁盘大小 此时并没有什么变化: 3. 上面没有变化的原因,是因为需要重新扫描存储设备的scsi总线: 找到scsi磁 ...

  4. 20个Flutter实例视频教程-第14节: 展开闭合列表案例

    博客地址; https://jspang.com/post/flutterDemo.html#toc-5b0 视频地址: https://www.bilibili.com/video/av397092 ...

  5. 4-1逻辑与运算符介绍 & 4-2逻辑或运算符介绍

    后面括号内的(n++)不运算了. 4-2逻辑或运算符介绍

  6. 保持plsql窗口布局

    在window菜单中有个 save layout 项,设置好窗口布局后,选一下此项就保存你当前的窗口布局了,下次启动就不用再设置了.

  7. 51nod1179【思维】

    题意: 给你n个数,求两两之间的最大GCD: 思路: n太大,然后感觉是分解质因子,但是感觉分解质因子还是搞不出谁和谁的GCD: 但是可以发现,GCD给了一个范围1e6,所以能不能枚举GCD,然后看看 ...

  8. 洛谷P3306 [SDOI2013]随机数生成器(BSGS)

    传送门 感觉我BSGS都白学了……数学渣渣好像没有一道数学题能自己想出来…… 要求$X_{i+1}=aX_i+b\ (mod \ \ p)$ 左右同时加上$\frac{b}{a-1}$,把它变成等比数 ...

  9. 浏览器插件--TamperMonkey

    可以在此插件中添加一些脚本: 1,破解VIP会员视频集合,目前里里面的 “石头解析“,”无名小站“,”vip看看 ”可以解析爱奇艺等的视屏网站的会员视频 // ==UserScript== // @n ...

  10. SecureCRT 退格键等不好用

    1.MongoDB Shell中退格键使用的问题. 利用SecureCRT工具访问linux的时候,在使用MongoDB的交互式shell的时候,退格键(Backspace)无法使用,导致无法修改输入 ...