发现问题就解决,往往是低效的方式。关于对象参数的赋值取值问题

简介: 在审查中台task服务代码时,发现TaskVO对象的industryTypeName字段在某些方法调用中未进行空值检查,导致潜在bug。提出两种解决方案:一是在方法③中增加对industryTypeName的空值判断;二是改变方法③的参数类型,避免外部调用方直接设置industryTypeName,从而减少错误发生的可能性。

走查我们zhongtai-task(中台的task服务,注意,这个task不是Spring/Java里的task,而是我司业务中的企业用工任务)代码时发现一个问题。

 

先看下面的方法调用关系

TaskJobProxy#updateTaskStatus

 

TaskLevyReviewServiceImpl#levyAudit

 
 

TaskApplyServiceSync#auditCreateTaskApplySync(TaskVO,...)

 

 

然后,看方法③所调用的部分方法。

 

TaskApplyServiceSync#auditCreateTaskApplySync

 
 

TaskApplyServiceSync#batchSaveTaskApply(TaskVO,...)

 

RecommendService#bosskgRecommend(TaskVO)

 

说明:

  • 方法③接收的一个参数是 TaskVO对象,并将这个对象向下传递给 方法④ 和⑤。
  • TaskVO 有一个field叫 industryTypeName。方法④ 和 ⑤ 都用到了它。其中,方法 ⑤ 里判断了 industryTypeName为空的情况,而④未判断。
  • 再回头说方法①和②。 方法①未对 industryTypeName 赋值。方法②有对 industryTypeName 赋值。

 

 

问题来了,方法④显然出现bug了。

 

那么,如何解决这个bug?

 

哪里出问题就解决哪里。 ------->修改方法④,做成与方法⑤那样,加上判断 industryTypeName为空的情况。

 

发现问题就解决,往往是低效的方式。

试想,假如日后需求迭代,要求方法③再调用一个方法⑥,同样传递 TaskVO对象,⑥里同样会用到 industryTypeName。 谁会注意  industryTypeName 是否为空呢?

 

那,当如何解题呢???

 

解题方式一:

解铃还须系铃人。我们把目标聚焦在方法③,既然要使用 TaskVO#industryTypeName,那就在方法③的起始行对入参TaskVO对象的 industryTypeName 进行空值判断。如果为空,则可根据数据关系来为其赋值,或直接返回错误,具体视业务需要而定。

 

解题方式二:

我们依然是把目标聚焦在方法③。我们要分析这个方法的职责,如果理应由它来为 industryTypeName 赋值,那就不要对外暴露 industryTypeName。就是说,要么去掉TaskVO的industryTypeName 属性,要么不暴露 TaskVO类型的对象。


通过分析,的确不应该由调用方来为 industryTypeName 赋值。因此,我们变更方法③的入参,将参数类型由TaskVO改为更加原子的Task。然后,在这个方法内部内部构造TaskVO对象。

 

目录
相关文章
|
安全 数据安全/隐私保护
解释 TCSEC 和 ITSEC
【8月更文挑战第31天】
1251 1
|
1天前
|
人工智能 API 开发工具
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
Claude Code是我目前最推荐的AI编程工具,没有之一。 它可能不是最简单的,但绝对是上限最高的。一旦跑通安装、接上模型、定好规范,你会发现很多原本需要几小时的工作,现在几分钟就能搞定。 这套方案的核心优势就三个字:可控性。你不用依赖任何不稳定服务,所有组件都在自己手里。模型效果不好?换一个。框架更新了?自己决定升不升。 这才是AI时代开发者该有的姿势——不是被动等喂饭,而是主动搭建自己的生产力基础设施。 希望这篇保姆教程,能帮你顺利上车。做出你自己的作品。
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
|
9天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
3705 21
|
5天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
2231 8
|
3天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
1852 3
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
21天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
18637 60
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
2天前
|
SQL 人工智能 弹性计算
阿里云发布 Agentic NDR,威胁检测与响应进入智能体时代
欢迎前往阿里云云防火墙控制台体验!
1165 2

热门文章

最新文章