网站大量收购独家精品文档,联系QQ:2885784924

第3章 代码中存在问题.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 代码中存在问题

第3章 代码中存在的问题 捎貉孟孕姚纬饮历傲锡瘟肾褪添训篇胸谭兑龚辛匣死枣爹溯匪患粤违惟受第3章 代码中存在问题第3章 代码中存在问题 一、代码重复 同一个类中两个函数具有相同的表达式,或者在一个以上的地点出现相同的程序结构。 提炼出重复的代码,让这两个地点都调用被提炼出来的那一段代码,将它们合而为一。 两个互为兄弟的子类内含相同表达式。需对两个类进行提炼,将被提炼出来的代码使用放入一个子类内。如果代码之间只是类似,并非完全相同,那么将相似部分和差异部分割开,构成单独一个函数。如果有些函数以不同的算法做相同的事,选择其中较清晰的一个,将其他函数的算法替换掉。 眠炕贡衔粹渡屏骨凝缩坯月簧筋捅煎睡息哲柠冻判惑驼疵抨黎持违阻邀往第3章 代码中存在问题第3章 代码中存在问题 如果两个毫不相关的类内出现重复代码,将重复代码提炼到一个独立类中,然后在另㆒个类内使用这个新类。但是,重复代码所在的函数也可能的确只应该属于某个 类,另一个类只能调用它,或这个函数可能属于第三个类,而另两个应该引用这第三个类。 渴颓频卖娩吐科踩涕棠室鉴驳乎赦闯仑碉悼尊暂坚版访肿揣郝获淀铰终归第3章 代码中存在问题第3章 代码中存在问题 二、过长的函数 当感觉需要以注释来说明什么的时候,就把需要说明的东西写进一个独立函数,并以其用途(而非实现手法)命名。可以对一组或甚至一行代码做这件事。哪怕替换后的函数调用动作比函数自身还长,只要函数名称能够解释其用途,也该那么做。关键不在于函数的长度,而在于函数“做什么”和“如何做”之间的语义距离。 找到函数中适合集在一起的部分,将它们提炼出来形成新函数。一个很好的技巧是:寻找注释。它们通常是指出“代码用途和实现手法间的语义距离”的信号。如果代码前方有一行注释,就是在提醒可以将这段代码替换成函数,而且可以在注释的基础上给这个函数命名。即使只有一行代码,如果它需要以注释来说明,那也值得将它提炼到独立函数去。 条件式和循环常常也是提炼的信号。应该将循环和其内的代码提炼到一个独立函数。 窃屿悍荒享芒杠钥濒咋圈摘己叹踪樟坑程涯冲讳皇雍上寓姬刹队入宁劈刊第3章 代码中存在问题第3章 代码中存在问题 三、过大的类 如果想利用单一类做太多事情,其内往往就会出现太多实例变量。一旦如此,代码重复也就随机出现。 可以将彼此相关的数个变量一起提炼至新类内。通常如果类的多个变量有相同的字首或字尾,这就意味有机会把它们提炼到某个组件内。如果这个组件适合作为一个 子类,会发现提取类往往比较简单。 如果类是个GUI,可能需要把数据和行为移到一个独立的领域对象去。两边 各保留一些重复数据,并令这些数据同步。这种情况下,如果使用旧式 AWT组件,可以采用这种方式去掉 GUI 类并代以 Swing组件。 迎揉潘棉洗误涡梗纱利简檀菊谣萤房辑歧墅痔胚荷兰为仆究粕癣廊箭巧香第3章 代码中存在问题第3章 代码中存在问题 四、过长参数列 太长的参数列难以理解,会造成前后不一致、不易使用,而且一旦需要更多数据,就不得不修改它。如果将对象传递给函数,大多数修改都将没有必要,因为很可能只需 (在函数内) 增加一两条请求 ,就能得到更多数据。 有一个重要的例外。有时候不希望造成“被调用之对象”与“较大对象”间的某种依存关系。这时候可将数据从对象中拆解出来单独作为参数。但是应注意其所引发的代价。如果参数列太长或变化太频繁,就需要重新考虑依存结构。 笆戚胀距国赁腔惜乡闷万昔辉椒升要又傈同订瘁弛氨拉筛凤漳篆诉脚淡惫第3章 代码中存在问题第3章 代码中存在问题 五 发散式变化 如果某个类经常因为不同的原因在不同的方向上发生变化,那么也许将这个对象分成两个或多个会更好,这样每个对象就可以只因一种变化而需要修改。 针对某一外界变化的所有相应修改,都只应该发生在单一的类中,而这个新类内的所有内容都应该反应该外界变化。为此应该找出因著某特定原因而造成的所有变化,然后将它们提炼到另一个类。 忱希翼竭瞧互袭蝇党扰希断呛户侮拯薯培颗侯找涸厨驹隙胡呸娄坊临鸥屿第3章 代码中存在问题第3章 代码中存在问题 六、霰弹式修改 如果每遇到某种变化,都必须在许多不同的 类内作出许多小修改以回应,需要修改的代码散布四处,不但很难找到它们,也很容易忘记某个重要的修改。 这种情况下,应该通过移动方法和值域把所有需要修改的代码放进同一个类。如果没有合适的类可以安置这些代码,就创造一个。通常可以把一系列相关行为放进同个类。这可能会造成少量发散变化,易于处理。 驴奎却替臻鹿钨擂藻挥凝痢酵矛洲秽伤崇拍

您可能关注的文档

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档