项目实战典型案例6——没有复用思想
创始人
2024-05-31 10:35:57
0

这里写目录标题

  • 一:背景介绍
    • 反例
  • 思路&方案
    • 反例一的优化思路和方案
      • 反例一优化的模拟代码
    • 测试
      • 优化之前的缺点与优化之后的优点
    • 反例二的优化思路和方案
      • 反例二优化的模拟代码
      • 测试
      • 优化之前的缺点与优化之后的优点
  • 四:总结

一:背景介绍

本篇博客是对项目开发中出现的没有复用思想的反例进行的总结并进行的改进。目的是将经历转变为自己的经验。通过博客的方式分享给大家,大家一起共同进步和提高。

反例

在这里插入图片描述
在这里插入图片描述

反例一解读:
这两个归根到底都是查询在线人员,并且返回的数据类型和结构都是一致的。我们完全有条件可以只写一个接口来实现这两个类似的功能。

反例二解读:
这里使用了mybatis动态SQL进行处理,但是对于course_id与class_id完全可以抽出来,作为公共的进行使用。

思路&方案

模拟代码的环境为:spring boot、 spring mvc 、mybatis、mysql

反例一的优化思路和方案

对于反例一的优化思路:两个查询在线人员的的接口我们可以使用一个接口进行实现,两个接口的区别主要是在于入参不一致,这里我们可以通过使用mybatis的动态SQL进行实现。这样我们由之前的两个接口的(两个controller、两个IService、两个ServiceImpl、两个mapper、两个sql)转变成了一个(controller、Iservice、ServiceImpl、mapper、sql)。

反例一优化的模拟代码

Controller层

 /** @description:查询课程内容* @author: wangwei* @date: 2023/3/7 16:00* @param: [courseContent]* @return: java.util.List**/@PostMapping("/queryCourseContent")public List queryCourseContent(@RequestBody CourseContentEntity courseContent){return iCourseContentService.queryCourseContent(courseContent);}

IService层

List queryCourseContent(CourseContentEntity courseContent);

ServiceImpl层

	@ResourceCourseContentMapper courseContentMapper;/** @description:查询课程内容* @author: wangwei* @date: 2023/3/7 15:57* @param: [courseContent]* @return: java.util.List**/@Overridepublic List queryCourseContent(CourseContentEntity courseContent) {return courseContentMapper.queryCourseContentRecord(courseContent);}

mapper层

//通用查询语句List queryCourseContentRecord(CourseContentEntity courseContentEntity);

mapper.xml


测试

1.先查询所有的课程内容,不传入任何的参数
在这里插入图片描述
2.查询创建人为张有博的课程内容,传入参数createBy=“张有博”
在这里插入图片描述

优化之前的缺点与优化之后的优点

优化之前:

  1. 由于没有进行复用导致代码大量重复,工作量是之前的2倍。对于后序的代码开发大大的增加了工作量。
  2. 会照成对于单表的crud过多,例如没有采用复用的思想以及动态sql将会导致后序对于单表的查询过多,造成难以维护,维护量大。

优化之后:

  1. 代码量小,复用性强,可以满足90%以上对于这张表的查询。
  2. 维护维护成本低,只需要维护这一个查询接口

反例二的优化思路和方案

反例二的优化思路:将的course_id与class_id抽出作为公共数据使用。这样代码体现出代码的复用思想,以及维护量也小的多。

反例二优化的模拟代码

在这里插入图片描述

测试

在这里插入图片描述

优化之前的缺点与优化之后的优点

优化之前的缺点:代码冗余没有复用思想,比较不好维护。

优化之后的优点:将公共代码进行了复用,体现了复用思想,提高对于代码复用,代码维护。

四:总结

1.在设计之初应该想到如何设计接口如何设计,如何提高效率,如何到达复用强,维护成本低,扩展性强。是面向对象的设计还是面向过程的设计,最后选择一种复合当前项目的设计思想,并按照这个设计思想进行设计和开发。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...