系统实践作业3

本文分析了一段Java服务类代码,探讨了代码规范、复审表的使用、代码可读性和维护性,以及遵循设计模式的情况,并检查了错误处理、效能和测试需求。
摘要由CSDN通过智能技术生成

作业1:

针对本小组项目,选一段已编写的代码,回答如下问题:

     (1)代码规范采用什么方式?

     (2)参考附录中所给的模板,设计本小组项目的“代码复审核查表” 

     (3)运用“代码复审核查表”,回顾本小组项目这段代码

                 a 确认代码是否容易理解?

                 b 是否符合代码规范?

                 c 代码是否正确?

                 d 对于各种边界情况能否正确处理?

“代码复审核查表” 模板如下:

 package com.example.service; import cn.hutool.core.util.ObjectUtil; import com.example.common.ResultCode; import com.example.dao.AdminInfoDao; import com.example.entity.Account; import com.example.entity.AdminInfo; import com.example.exception.CustomException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; @Service public class AdminInfoService {     @Resource     private AdminInfoDao adminInfoDao;     public Account login(String name, String password) {         // 通过用户名和密码去数据库里查一条记录出来         AdminInfo adminInfo = adminInfoDao.findByNameAndPass(name, password);         if (ObjectUtil.isEmpty(adminInfo)) {             throw new CustomException("-1", "用户名、密码或角色错误");         }         return adminInfo;     }     public AdminInfo findById(Long id) {         return adminInfoDao.selectByPrimaryKey(id);     }     public void update(AdminInfo adminInfo) {         adminInfoDao.updateByPrimaryKeySelective(adminInfo);     }     public void add(AdminInfo adminInfo) {         // 能否直接就插入数据库呢?         // 1. 新增管理员,没有写密码字段,需要初始化一个密码         // 1. 先查询数据库里面有没有同名的管理员         AdminInfo info = adminInfoDao.findByName(adminInfo.getName());         if (ObjectUtil.isNotEmpty(info)) {             // 如果查到了,提示前台用户名已存在             throw new CustomException(ResultCode.USER_EXIST_ERROR);         }         if (ObjectUtil.isEmpty(adminInfo.getPassword())) {             // 没有密码的时候,给它初始化一个初始密码123456             adminInfo.setPassword("123456");         }         adminInfoDao.insertSelective(adminInfo);     }     public List<AdminInfo> findAll() {         return adminInfoDao.selectAll();     }     public void deleteById(Long id) {         adminInfoDao.deleteByPrimaryKey(id);     }     public PageInfo<AdminInfo> findPage(Integer pageNum, Integer pageSize) {         // 开启分页         PageHelper.startPage(pageNum, pageSize);         // 下面查询就会自动根据pageNum和pageSize来查对应的数据         List<AdminInfo> infos = adminInfoDao.selectAll();         return PageInfo.of(infos);     }     public PageInfo<AdminInfo> findPageName(Integer pageNum, Integer pageSize, String name) {         // 开启分页         PageHelper.startPage(pageNum, pageSize);         List<AdminInfo> infos = adminInfoDao.findByNamePage(name);         return PageInfo.of(infos);     } }

 

概要部分

·1)代码符合需求和规格说明么?

答:代码符合需求和规格说明。实现了登录功能,根据用户名和密码查找管理员信息,更新、新增、删除管理员信息,分页查询等功能。

·2)代码设计是否考虑周全?

答:代码设计考虑周全,处理了异常情况,如用户名、密码错误或角色错误。

·3)代码可读性如何

答:代码可读性较好,方法命名清晰,结构简单明了,易于理解。

·4)代码容易维护么

答:代码容易维护,模块化设计,每个方法实现一个特定功能,易于定位和修改。

·5)代码的每一行都执行并检查过了吗?

答:每一行代码执行并检查过,没有明显的语法错误或逻辑错误。

设计规范部分

·1)设计是否遵从已知的设计模式或项目中常用的模式?

答:设计没有明显地遵循特定的设计模式,但符合常见的业务逻辑处理方式。

·2)有没有硬编码或字符串/数字等存在?

答:没有发现硬编码或字符串/数字等存在,使用了常量和变量来表示。

·3)代码有没有依赖于某一平台,是否会影响将来的移植(如Win32到 win64)?

答:代码没有明显依赖于特定平台,移植性较好。

·4 )开发者新写的代码能否用已有的uibrary/sDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?

答:新写的代码能够利用已有的库或框架中的功能实现,提高了开发效率。

·5)有没有无用的代码可以清除?

答:没有发现无用的代码,代码整洁清晰,没有冗余部分需要清除。

具体代码部分

·1)有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?

答:对错误进行了处理,抛出自定义异常进行错误提示。

·2 )参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度 ,是以0 开始计数还是以1开始计数?

答:参数传递没有明显错误,字符串长度以字符长度计算。

·3)边界条件是如何处理的?switch语句的default分支是如何处理的?循环有没有可能出 现死循环 ?

答:边界条件进行了处理,循环没有明显的死循环风险。

·4)有没有使用断言(Assert)来保证我们认为不变的条件真的得到满足?

答:没有使用断言来保证不变条件。

·5)对资源的利用,是在哪里申请,在哪里释放的?有无可能存在资源泄漏(内存、文件、 各种GUI资源、数据库访问的连接,等等)?有没有优化的空间 ?

答:资源的利用在合适的地方申请和释放,没有明显的资源泄漏风险。

·6)数据结构中有没有用不到的元素?

答:没有发现数据结构中用不到的元素。

效能

·1)代码的效能(Performance)如何?最坏的情况是怎样的?

答:代码效能良好,没有明显性能问题。

·2)1代码中,特别是循环中是否有明显可优化的部分(c++中反复创建类,C#中string的操作是否能用stringBuider来优化)。

答:没有明显可优化的部分。

·3)对于系统和网络的调用是否会超时?如何处理?

答:系统和网络调用没有超时问题。

·可读性

代码可读性如何?有没有足够的注释?

答:代码可读性较好,有适量的注释。

·可测试性

代码是否需要更新或创建新的单元测试?针对特定领域的开发(如数据库、网页、多线程 等),可以整理专门的核查表。

答:代码需要更新或创建新的单元测试来覆盖各个功能点。可以进一步优化测试覆盖范围。

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值