从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. 使用 StoryBoard 制作一个能够删除cell的TableView

    本篇博客方便自己检索使用.资源链接 下面是制作效果图,点击删除按钮,就能将该cell删除: 下面是主要的代码: #define KSUPER_TAG 20000 #define KDEFAU_TAG ...

  2. Sudo环境变量继承

    sudo中默认配置会重置环境变量,所以使用sudo的时候需要小心这点.如何让sudo继承我们需要的环境变量?有如下两种方法: #sudo visudo 或者 #vi  /etc/sudoers     ...

  3. SparseArray浅析

    HashMap是java里比较常用的一个集合类,我们一般用来缓存一些处理后的结果.但当你做一个Android项目时,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performanc ...

  4. C/C++学习笔记1

    namespace: 通过命名空间防止变量冲突. 定义 namespace nsl { class Student { public: Student(int n,string nam,int a) ...

  5. 极客时间_Vue开发实战_04.开发环境搭建

    Vue CLI的形式搭建环境: vue create hello-world 我们选择default默认的配置,提供babel和eslint的支持.如果你已经对工程化的东西非常了解了.你可以选择自定义 ...

  6. Flutter实战视频-移动电商-21.分类页_类别信息接口调试

    21.分类页_类别信息接口调试 先解决一个坑 取消上面的GridVIew的回弹效果.就是在拖这个gridview的时候有一个滚动的效果 physics: NeverScrollableScrollPh ...

  7. CCF 201509-3 模板生成系统 (STL+模拟)

    问题描述 成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的.例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是 而当用户为 Jerr ...

  8. Oculus Rift, HTC Vive, SONY PSVR的全面对比

    http://blog.csdn.net/xoyojank/article/details/50927572 这次有幸参加了GDC 2016, 终于把三大设备体验了个遍, 也试玩了很多不错的VR游戏. ...

  9. NDAP 日志

    2014.04.29 1.理论债券价格CalculateExpetedBondPrice计算有误差 CalculateLibrary中的计算理论债券价格(计算理论期货价格的反函数)和正确结果有误差(可 ...

  10. IT兄弟连 JavaWeb教程 El基本语法

    EL(Expression Language)表达式语言是在JSP 2.0版本中引入的新特性,它用于JSP文件中的数据访问.这种表达式语言能简化JSP文件中数据访问的代码,可用来替代传统的基于&quo ...