1)不要随意增加null判断,通过异常来明确业务要求
下面代码的业务逻辑:如果bspcalendar.getHasProduction() is true,那么billPeriodService.queryBillPeriod一定有值,这个限制时通过界面控制实现的,这样的话下面的if (billp != null) 判断是没有意义的,由于开发阶段的数据准备问题会导致billPeriodService.queryBillPeriod可能会为空,所以增加if (billp != null) 判断,使得程序不会出现空指针,但如果真得为空了会导致逻辑错误(代码没有报错,但结果不对,给调式问题带来的困难),数据为空的原因是其他代码的错误导致的。更好的做法是如果为空就抛出异常,使得程序中断而不是按错误的路径执行,明确提示开发人员是数据问题导致的,这样开发人员一眼就能知道原因了。并且一定不能为空也是业务逻辑上的要求。
int month = 1;
int period = 1;
BspCalendar bspcalendar = bspCalendarService.queryBspCalendar(param.getYear());
if (bspcalendar.getHasProduction()) {
BillPeriod billp = billPeriodService.queryBillPeriod(userInfo.getBspCode(),
param.getStartDate());
if (billp != null) {
month = praseBillPeriod(billp.getBillPeriod().substring(2))[0];
period = praseBillPeriod(billp.getBillPeriod().substring(2))[1];
}
} else {
if (yearHeader.compareTo(param.getStartDate()) > 0) {
month = 1;
} else {
month = DateUtils.getMonth(param.getStartDate());
}
}
改进后的代码,增加了为空后的异常。
int month = 1;
int period = 1;
BspCalendar bspcalendar = bspCalendarService.queryBspCalendar(param.getYear());
if (bspcalendar.getHasProduction()) {
BillPeriod billp = billPeriodService.queryBillPeriod(userInfo.getBspCode(),
param.getStartDate());
if (billp != null) {
month = praseBillPeriod(billp.getBillPeriod().substring(2))[0];
period = praseBillPeriod(billp.getBillPeriod().substring(2))[1];
} else {
throw new RuntimeException("not exist BillPeriod,it's StartDate is:"
+ DateUtils.dateToString(param.getStartDate(), "yyyyMMdd"));
}
} else {
if (yearHeader.compareTo(param.getStartDate()) > 0) {
month = 1;
} else {
month = DateUtils.getMonth(param.getStartDate());
}
}
分享到:
相关推荐
依据现行一系列新工程质量验收标准、规范,结合编者多年从事工程质量管理经验,编写了《施工资料整理手册》一书,旨在帮助广大资料员结合新验收标准、规范,学习掌握施工资料整理基本思路和要求,提高资料整理水平。...
此外,该大纲还提供了一些实用的技巧和建议,帮助开发者提高编程效率和代码质量。 总之,这份文件是一份非常有价值的前端开发资料,对于想要系统地学习和掌握JavaScript基础知识的开发者来说,是一份不可多得的学习...
之前的一年对自己的要求还不够高,所以在技术文章阅读总结上少下了功夫,每天的博客阅读,没有及时留下笔记,这点在端点消失了,所以开始了自己的博客整理。 个人博客构建,上次动它已经是2017年了,hexo框架搭建,...
度大幅提高,罚款金额由 23.6 亿元升至 152.8 亿元。在消除污染之余,环 保执法日渐发挥着经济杠杆的作用。加强环保执法成为我国优化产业结构、促进经济从高速 增长阶段迈向高质量发展阶段的内在要求。 我们收集整理...
针对Java开发,参考阿里Java开发手册,整理出一份适合大部分公司开发人员的规约,这份规约约束开发人员遵循规范,能有效提高代码质量,使项目代码更优雅更整洁。
提高代码质量 更新技术栈为最新版本,并引入新技术 本仓库包含 系统 描述 HIS-master 单体应用 his-cloud 分布式微服务应用 HIS-web 诊疗前端 HIS-app 患者前端 注:单体应用和分布式实现业务完全相同
AQtime 2021是一个非常... 总之,AQtime 2021是一个方便的应用程序,允许开发人员提高程序的效率,优化内存使用状态,清除代码,最终提高代码和程序的最终质量。 您也可以下载ReportBuilder Enterprise 2021免费下载。
值得一提的是,该系统的源代码已经进行了优化和整理,注释清晰、结构合理,为开发者提供了良好的学习和参考资源。无论是初学者还是经验丰富的开发者,都可以从中学到Spring Boot开发的实用技巧。 总之,这个基于...
分享两款提高刷题效率和质量的神器 用动态图详细讲解算法原理 必备企业刷题网站 《剑指Offer》面试题Python实现 《剑指Offer》面试题C++实现 TODO 图像处理 TODO 图像处理推荐教程和面试题整理 机器学习 TODO 机器...
书写出高质量的JS代码不仅让程序员看着舒服,更加能够提高程序的运行速度,以下就是软件开发网的小编整理方法: 一、如何书写可维护性的代码 当出现bug的时候如果你能立马修复它是最好的,此时解决问题的四路在你脑...
济已由高速增长阶段转向高质量发展阶段,提高全要素生产率成为经济高质量发展的动力源 泉。 因此,以全要素生产率的提升提动经济高质量、可持续发展成为重要方向。 企业作 为微观主体之一,提高全要素生产率水平,...
真题的历练对于锻炼编程逻辑、提高代码质量、加深对电子元件特性的理解和应用都是至关重要的。这些真题不仅是对知识点的考察,更是对参赛选手分析问题、解决问题能力的全面测试。 不仅适用于将参加比赛的学生,也...
今天是2015年的元宵节了,14年承诺朋友们公开自己常用的工具和类库集,一直没能及时兑现。今天忙里偷个闲,整理了一下清单...并在开发时实时提供代码复杂度的报告,以便帮助开发人员降低代码复杂度、提高代码质量。CssC
该宝典系统地整理了Java初级,中级,高级的基础知识,代码质量,解题思路,优化效率等面试要点,面试的基础知识从编程语言,数据结构及算法三方面总结程序员面试知识点,世间事,很多都可投机取巧,但技术却必须靠日积月累的...
系统在生活中的应用十分广泛,无论是个人还是企业,在日常生活中都需要系统,不仅可以提高工作效率和质量,也可以提高数据准确性,以下是系统的好处: 提高效率:系统可以自动化处理大量的数据和信息,从而减少了...
为代码重构和提高代码质量提供动力. 这份文档来自 Geotechnical, 是一份非常难得的经验准则. 你完全可以以这份准则作为模板, 结合所在团队的经验, 整理出一份内部单元测试准则. 译文由强大的 文本标记语法驱动. 测试...
创建此文档是为了在GS SHOP IT Innovation Center JavaScript开发过程中提高代码质量以及开发人员之间的通信。 该文档可由GS SHOP中的任何开发人员提供。 编码风格指南 当您要在javascript代码库上执行代码审阅时,...
数字档案管理: 自动整理和优化数字化文档或照片库,提升存档质量。 【目标】 自动化清晰度评估: 实现图像清晰度的自动量化和比较,无需人工介入。 高效筛选: 快速从大量图像中找出最清晰的图像,提高工作效率。 组织...
同时也能帮他们对文本进行纠错和审核,减少审核时间和提高文章质量。 通过情感分析帮助他们合理的回复和处理相关评论。 详细介绍参考:https://blog.csdn.net/sheziqiong/article/details/133918522