为了账号安全,请及时绑定邮箱和手机立即绑定

求问一些java的代码逻辑问题,为什么要这么写

求问一些java的代码逻辑问题,为什么要这么写

慕丝7291255 2018-06-23 10:34:35
比如我目前做的是一个关闭订单的功能,传入的参数是订单id,按理来说 我前台应该是所有未关闭的订单才会进到这个方法里面,为什么代码里面第一行还是获取到订单,然后判断状态是否已关闭,按理来说不应该是只有未关闭的订单才会进来吗,这一步不是多余的吗。
查看完整描述

3 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

多线程修改更新,重复点击等操作都可能对已经关闭的订单再次操作,这是个时序问题,其实这样做的目的主要还是出于安全性和减少数据库操作测次数。

查看完整回答
反对 回复 2018-07-13
?
噜噜哒

TA贡献1784条经验 获得超7个赞

有这么几个原因你会干“第一行代码先判断状态”
1,有的人直接跳过前面的过程(比如之前过程的URL链接),到中间的某一步,甚至使用机器模拟而非人类操作。
2,有多个人同时操作某条记录,他们可能是同时登录在同一个页面操作,也可能是不同的功能模块、终端设备改变同一个订单的状态
3,这个方法需要复用,或不确定有没有其他人以后会调用(哪怕那个人是你自己)

严谨的、健壮的代码,都是会先判断各种状态的,10行代码8行检查是很正常的,程序员慢慢都会养成“得到什么,先检验什么,如果条件不满足,考虑如何返回”的编程思考方式。检查对象本身、检查状态、检查业务逻辑是否正确。这样写出的代码bug会少很多。


查看完整回答
反对 回复 2018-07-13
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

主要是基于安全的考虑,如果将特殊情况排除在外,防止出现异常

查看完整回答
反对 回复 2018-07-13
  • 3 回答
  • 0 关注
  • 373 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信