`
海浪儿
  • 浏览: 274324 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一篇codereview报告--类的职责分配与代码冗余

阅读更多

     以下内容引自某个项目的一篇codereview报告    

   

       目前的codereview好像对代码的结构、代码的冗余关注的太少,这两天看了一下,发现xx系统里存在不少的冗余,这些都是由一些代码功能片段放置位置的不合理,类的职责分配不合理造成的。

譬如:

对于领域模型CreditCont,它的状态是否终止、有效、关闭;它是否已过期;它是否已生效等均属于领域模型CreditCont的本质特征,这些特征的判断会频繁的被其他类所使用,但是,目前对这些特征的判断都是由其他类负责.

譬如当某个类里的某个方法需要判断授信协议是否过期时,就直接在这个方法里写上判断语句,这样当多个类的多个方法都需要该判断功能时,就会到处都充斥着重复的判断语句.

譬如在类ContractStatusHelper里,有三个方法需要对授信协议是否过期进行判断,三个方法里都充斥着同样的判断语句:

        在类ContractAmountHelper里,也存在同样的冗余:

 

       在类ContractValidatorFacadeImpl里也有同样的代码片段。

 

像这种对某个领域模型本质特征进行判断的功能,应该由领域模型自己负责(即将这样的功能提炼为一个方法并移入领域模型本身,实际上这也是Martin Flower在重构中所提倡的),这样其他类需要对该特征进行判断的时候,就只需要委托领域模型去判断了,达到了复用的目的,而且每个类的职责也更清晰。

譬如上面对授信协议是否过期的判断就可以放在CreditCont

        其他类需要判断授信协议是否过期时,只需要委托调用CreditContisNotDue方法就可以了,

 这种结构使得代码的语义也更清新,看见函数的名称就知道该行代码的功能。

 

而按照目前的代码结构,不仅使代码充斥着冗余,而且导致有些类非常复杂,功能很多(因为它负责了很多本不应该由它负责的功能),而有些类又非常的单薄,是贫血的(除了一堆get/set方法,啥事都不做),只有属性,没有任何行为或只有弱行为的类都是病态的。而且在同一个方法里,如果需要对多个本质特征进行判断,采用目前的方式,就会导致方法里到处充斥着判断语句,只见木不见林。

 

像这种情况,目前代码里比较多,譬如对于领域模型Bill,判断账单是否已出账,这也属于Bill的本质特征,而且也会经常被其他类用到,但目前这种功能代码片段都是放在其他类中的。

 

建议:对于某个方法里的一些代码片段,如果该片段所用到的方法、变量都属于(或大部分属于)另外一个类,而与该片段所在的类没有任何关系(或者关系很少),应该将该片段提炼为一个方法并移入到另外一个类中,如果该片段所需要的一些变量在另一个类中无法获取,则可以作为该方法的输入参数传过去。

 

距发这篇报告又过了一年,期间还是发现很多系统都存在这种问题,职责分配不合理是导致系统复杂混乱、代码冗余的罪魁祸首。

分享到:
评论

相关推荐

    VB-Code-教育-学生考试系统-源代码全

    VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源代码全VB-Code-教育-学生考试系统-源...

    IDEA代码检视插件Code Review Helper(支持团队协同)

    6. **源代码管理集成**:Code Review Helper通常会与版本控制系统(如Git)集成,使得代码审查与日常的开发流程无缝衔接,确保每次代码提交都能得到适当的审查。 在实际使用中,下载的压缩包文件"IntellijIDEA-Code...

    Modern Code Review- A Case Study at Google.pdf

    Employing lightweight, tool-based code review of code changes (aka modern code review) has become the norm for a wide variety of open-source and industrial systems. In this paper, we make an ...

    代码审查CodeReview的最佳实践

    我一直认为CodeReview(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,CodeReview都是基本要求,代 我一直认为CodeReview(代码...

    Source Insight CodeReview宏,增加使用说明

    **Source Insight CodeReview宏**是专门针对Source Insight这款强大的源代码查看和编辑工具设计的一套扩展功能,主要用于代码评审和统计。Source Insight以其强大的代码导航、语法高亮和实时分析能力,深受程序员...

    静态测试方法之代码审查(CodeReview)的清单

    静态测试方法之代码审查(CodeReview)的清单。代码审查可以帮助提高代码质量,避免由于代码习惯而造成的bug。下面列出的这些要点因该可以作为大部分代码审查的指导,如果是Java应用的话,这些建议应该被视作最佳实践...

    code-maker-browser-代码编辑器

    code-maker-browser是一款专为开发者设计的高效代码编辑器,旨在提供便捷的CSS编辑功能,并支持代码的导入与导出,以供二次开发使用。它不仅具备基本的文本编辑能力,还能够与各种前端框架无缝对接,为JavaScript的...

    code review

    `CodeReview.em`可能是一个包含了代码审查过程记录或结果的文件,而`codereivew.docx`可能是详细的代码审查报告,其中可能详细列出了审查过程中发现的问题、建议的修改以及后续的行动计划。通过这两个文件,团队成员...

    SAP- Query报表事务代码分配及配置操作手册

    - 分配事务代码:将新创建的Query报表与一个特定的事务代码关联,如“ZQM_PROD_ISSUE”,并设置相应的权限。 通过以上步骤,SAP顾问可以有效地配置和分配Query报表,确保业务人员能够快速、准确地获取所需的数据...

    zyh-code-review.rar

    zyh-code-review.rarzyh-code-review.rarzyh-code-review.rarzyh-code-review.rar

    CodeReview工具

    Code Review是软件开发过程中的一个重要环节,它有助于提高代码质量,发现潜在的错误,以及确保团队成员间的代码风格一致。本文将详细介绍两款Eclipse插件——Jupiter和Reviewclipse,它们是进行Code Review的有力...

    PHP-Code-review.rar_PHP codereview_php code review_php代码review

    代码审核,是对应用程序源代码进行系统性检查的工作。它的目的是为了找到并且修复应 用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必 要的风险。

    ReviewCode-master.rar

    【标题】"ReviewCode-master.rar" 是一个压缩文件,通常包含了一个名为 "ReviewCode-master" 的项目或代码库。在IT行业中,这样的命名通常表示这是一个关于代码审查的项目,可能是为了教学、分享最佳实践或者是一个...

    Steven Code Review 代码在线审查

    Steven Code Review 2009.12M1发布包.rar 代码在线审查工具 @date: 2009-12-28 @author: YF @email: yifi@tom.com 功能: 1 方便学员学习教师的代码,无需在本机运行IDE即可以代码加亮的方式查看服务器共享的代码...

    Code Review Checklist

    代码审查(Code Review)是软件开发过程中的一个重要环节,它旨在通过同行评审来发现并修复潜在的错误,提高代码质量,确保代码符合团队规范。以下是一个详细的代码审查检查列表,适用于各种编程语言和项目规模: 1...

    Source Insight 宏 codeReview.em

    CodeReview工具的作用:1.减少评审人的缺陷记录和汇总时间,方便责任人查找问题出处;2.检视完成后生成检查报告,代码作者点击按钮可以直接找到错误处;3.任务责任人修改完成后,直接修改问题状态,组织者按快捷键...

    CODE--一些实战项目的工程源代码Video---一些知识的视频讲解代码差错器---方便你代码差错C#.zip

    CODE--一些实战项目的工程源代码Video---一些知识的视频讲解代码差错器---方便你代码差错C#.zip

    code-prettify-master

    `code-prettify-master`就是这样一款专门用于代码高亮显示的插件,它能够将网页中的代码段美化,提高代码的可读性和视觉吸引力。本文将详细介绍这个插件的使用方法、功能特性以及如何在项目中集成。 一、插件介绍 ...

    ivotical-codereview-gitlab:Gitlab的代码审查集成帮助器

    总的来说,`pivotical-codereview-gitlab` 是一个强大的辅助工具,通过将 Gitlab 与 Pivotal Tracker 集成,它可以帮助团队更有效地进行代码审查,保持项目进度的透明度,提高代码质量,同时降低沟通成本。...

    CodeReview工具Jupiter

    Code Review的作用和意义已在很多技术团队内达成共识,可是很多时候并未被有效执行,甚至被认为是一项费时费力的工作。借助一些工具可以更容易,更有效率地来进行Code Review,本文介绍的Jupiter即是其中之一。  ...

Global site tag (gtag.js) - Google Analytics