StackTc
StackTc
采纳率61.9%
2018-07-10 09:24 阅读 1.1k
已采纳

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

5

比如我目前做的是一个关闭订单的功能,传入的参数是订单id,
按理来说 我前台应该是所有未关闭的订单才会进到这个方法里面,
为什么代码里面第一行还是获取到订单,然后判断状态是否已关闭,
按理来说不应该是只有未关闭的订单才会进来吗,这一步不是多余的吗。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    gf0515 Fatal Error 2018-07-10 09:27

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

    点赞 评论 复制链接分享
  • weixin_39713739 weixin_39713739 2018-07-10 10:28

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

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

    点赞 评论 复制链接分享
  • sinat_35477706 缄墨 2018-07-10 11:13

    关于先校验页面是否处于关闭状态,主要就是处于严谨性或安全性,如果前面的操作不当,或者后台代码改动了页面状态的话,有可能对数据记录进行了修改。所以,为了代码的严谨性,基本上先判断一下当前要修改更新的记录字段状态。

    点赞 评论 复制链接分享
  • beigaier beigaier 2018-07-11 14:06

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

    点赞 评论 复制链接分享

相关推荐