代码大全2(读书笔记14)

151、在与项目规模的关系方面,生产率的情况与软件质量很相似。对于小项目,影响生产率的最大因素莫过于单个程序员的技巧。随着项目规模和团队规模的增大,组织方式对生产率的影响也将随之增大。

 

152、小项目的生产率会比大项目高出23倍,并且最小的项目和最大的项目的生产率差距可能达到510倍之巨。

 

153、项目越大,复杂度也越大,也就越要求有意识地去关注方法论。建造摩天大楼的方法和搭狗窝的方法是不一样的。不同规模的软件项目也是如此。对于大项目来说,如果不有意识地去选择方法论,就将无法完成任务。成功的项目计划人员会明确为大型项目选择合适的策略。

 

154、项目落后了怎么办

缩减项目范围这一强大的技术常会人们所忽略。如果你去掉了一项特性,你就除支了相应的设计、编码、测试、和编写文档工作。你也删除了该特性和其他特性之间的接口。

  当你最初做产品计划的时候,要把产品的功能划分成“必须有”、“有了更好”和“可选择”三类。如果进度落后了,那么就调整“可选择”和“有了更好”的优先级,并扔掉那些最不重要的功能。

    如果做不到完整地去掉某项特征,那么还可以提供一个该功能的简化版本。你可以按时地交付一个尚未进行性能高校的版本。你也可以提供一个版本,其中最不重要功能的实现相当粗略。你可以放松对速度的要求,因为提供一个速度较慢的版本会容易很多。你也可以放松对空间的要求,因为提供一个占用更多内存的版本会容易得多。

 

155、要求在任何领域里的所有微小细节上都步调一致,其收效恐怕无法弥补由此而对士气靠成的影响。如果你发现有人“不分青红皂白地使用goto或全局变量”、程序风格的可读性差、或者有其他影响整个项目的实践行为,那么就得为了提高代码质量而不怕一些摩擦了。如果你的程序员是负责任的,那么这很少会成为问题。最大的斗争往往只在编码猫鼠同乳一些细微差异上,你完全可以置身事外----只要这对项目没有损失。

 

156、有关程序员编程生产力的个体差异的最早一项研究是由Sackman\EriksonGrant20世纪60年代末期做出的。他们对平均工作经验为7年的专业程序员进行了调查,发现最好和最差程序员的初始编码用时比例为201,调试用时比例为251,程序规模比例为51,程序执行速度比便为101.

   尽管像251这样具体的比例并一是特别有意义,但是像“程序员之间有着数量级的差异”这样更一般的陈述的意义却是很明确的,并且已经被其他许多针对专业程序员的研究所证实。

 

 

157、物理环境对生产率有着巨大的影响。DeMarcoLister向来自35个组织的166名程序员询问了其亿处的物理环境的质量。大多数雇员都对其工作环境感不到满。在此后举行的一次编程竞赛中,排名在前25%的程序员都具有宽敞、安静、更为私密的办公室,并且较少受到其他人员和电话的干扰。

 

158、在增量集成中,你一小块一小块地编写并测试你的程序,然后一次一块地将它拼接起来。在这种“一次一块”的集成方式中,遵循以下步骤。

    1、开发一个小的系统功能部件。它可能是最小的功能部件、最难的部件、关键部件、或者以上的某种组合。对它彻底地测试并调试。将它作为骨架,稍后附着肌肉、神经、皮肤等系统的其余部件。

    2、设计、编码、测试、调试某个类。

    3、将这个新类集成到系统骨架上。测试并调试“骨架和新类的结合体”。在进一步添加任何新类之前,确保该结合体能工作。如果做完了剩余的所有工作,就回到步骤2开始重复这一过程。

    偶尔,你也可能想要集成某些“大于单个类的单元”。比如,如果某个组件经过彻底测试,其中每个类经过了迷你集成,那么你可以集成这整个组件,并仍然使用增量集成的方式。随着你不断地添加部件,系统增大,却是增加;就像雪球从山上滚下来时体积和动量不断增大一样。

 

159、风险导向的集成

  风险导向的集成也称为“困难部件优先集成法”。与三明治集成类似,它也试图避免“纯粹的自顶向下集成”或“纯粹的自底向上集成”的固有问题。巧合的是,它也趋向于先集成顶层类和底层类,将中间层类留后处理。然而,其动机不同。

  在风险导向的集成中,需要先鉴别各个类对应的风险级别。确定哪些部件实现起来是最有挑战的,然后先实现这些部件。经验表明顶层的接口是有风险的,因此它通常位于风险清单的顶部。系统接口,通常位于继承体系的底层,也是有风险的,因此它也在风险清单的顶部。另外,你或许知道中间层有一些具有挑战的类。可能是某个实现了未被透彻理解的算法的类,或者某个具有雄心勃勃的性能目标的类。这样的类也可标为“高风险”,应及早集成。

  余下的代码就是那些比较轻松的东西,可以等到以后再下手。其中的某些最终可能比你想象的要困难,但这是不可避免的。

 

160、格式化的基本原理指出,好的布局凸现程序的逻辑结构。

     使代码看起来有条理的最大意义莫过于展示出代码的结构。如果有某种方法能够更好地给出代码结构,而另一种方法可以使代码更悦目,那么还是选择前者为好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值