美文网首页
关于修改代码逻辑思路

关于修改代码逻辑思路

作者: 我就要取名叫夏末 | 来源:发表于2018-08-06 09:48 被阅读0次

周末在家突然想到之前写的代码处理逻辑有问题,心痒难耐终于熬到周一,可以修改了。
代码背景是根据传入的数据,获取特定字段,比如hagkDealerId,到对应的数据库里查询是否已经同步过该数据。

//判断hage数据库t_hage_dealer中是否已存在该经销商,d.getIsSynced()可能有三种情况,0,1,null
DealerEntity d = dealerRepository.findFirstByHawkDealerId(String.valueOf(dealerId.get("hawkDealerId")));
          if (d!=null) {
              continue;
          }

可以说非常简单粗暴了,查不到数据,说明没同步,继续往下走。查到有数据,说明同步过,结束本次循环。

我使用isSynced来标记数据的同步状态,0为未同步至电商平台,同步至电商平台后,根据获取电商平台返回值并修改同步标记0→1,表示同步成功。
所以查询出来的d.getIsSynced(),其实会有三种情况。0,1,null:
0对应同步至hage但没有成功同步到电商平台的状态,可能是数据有问题;
1表示数据已经成功同步到电商平台;
null表示这次的数据为新数据;

所以原先的判断显然是不对的,如果操作人员修正了有问题的数据,尝试重新同步时,会因为之前有数据不为空而直接跳过。

//判断hage数据库t_hage_dealer中是否已存在该经销商,d.getIsSynced()可能有三种情况,0,1,null
DealerEntity d = dealerRepository.findFirstByHawkDealerId(String.valueOf(dealerId.get("hawkDealerId")));
          if (d.getIsSynced()==0) {
                 dealerRepository.delete(d);
          }else if(d.getIsSynced()==1){
                 continue;
          }

如果查询到的同步标记为0,那就删掉数据库中的原数据,重新同步;
如果查询到的同步标记为1,跳出本次循环;
如果未查询到数据,不受影响继续同步;

这种情况下,如果数据库中没有数据,即为null的情况,尝试获取其isSynced值,会报空指针异常。
于是做如下改动:

//判断hage数据库t_hage_dealer中是否已存在该经销商,d.getIsSynced()可能有三种情况,0,1,null
 DealerEntity d = dealerRepository.findFirstByHawkDealerId(String.valueOf(dealerId.get("hawkDealerId")));
                        if (d==null){
                            insertDealer(dealerEntity,dealerId);
                        }else if(d.getIsSynced()==0) {
                            dealerRepository.delete(d);
                            insertDealer(dealerEntity,dealerId);
                        }else if(d.getIsSynced()==1){
                            continue;
                        }

其中insertDealer()方法是【把经销商数据保存在hage数据库t】的动作抽象出来形成的方法。

对于数据处理的思考:
应该考虑到数据状态的所有可能性,并对每一种不同可能性的情况都做出相应的处理。不能简单笼统地一刀切处理数据。

另外一开始以为根据字段查出来数据库中值,赋值给d后,删除d只是把表层的d删除了,不会对数据库中的数据有影响。
但是dealerRepository.delete(d),这个操作,直接映射数据库,把数据库里的数据也删除了,可谓是触及灵魂深处的操作,233333

相关文章

  • 关于修改代码逻辑思路

    周末在家突然想到之前写的代码处理逻辑有问题,心痒难耐终于熬到周一,可以修改了。代码背景是根据传入的数据,获取特定字...

  • 写代码的技巧

    1,理清楚思路2,使用代码实现思路3,学习更多写代码套路4,不要总想着抄近道,要根据逻辑思路来,不然容易产生bug

  • Android MVVM框架模式介绍

    为什么使用MVVM? 实现视图和逻辑代码的解耦 大大的简化了代码 修改XML中的控件时java代码不需要修改 迭代...

  • KMP算法

    关于KMP算法个人理解 笔者经过一个下午的整理,基本走通了所有逻辑。至于代码就不贴上了,功底有点烂。思路通了大于一...

  • Android NDK开发:C修改Java的属性

    目录 C修改Java非静态属性 Java代码 C代码(这里的逻辑需要倒着想,先调用修改属性的方法然后创建需要的参数...

  • java设计模式和设计原则(设计模式待续)

    1.开闭原则: 对修改关闭,对拓展开放。如果需要增加新的功能,不修改原有的代码逻辑,只针对原有的代码进行拓展,可以...

  • Android删除指定路径下指定前缀或后缀的文件

    需求 实现思路 实现一个删除逻辑的Runnable 代码实现的逻辑也比较简单,大家都能看得懂,下面我就直接贴代码了...

  • 015-3632第一本《金字塔原理》检验各分组是否合理?

    阅读《金字塔原理》P295 今天学习的新知: 1、描述逻辑结构、修改逻辑结构、用结构顺序概念检查思路 2、程序顺序...

  • git_已暂存的更改数问题

    一、新思路 (一)解决冲突→采用远程 远程代码中,已更改的只有“远程①”和“远程②”,Merge不算是修改的代码,...

  • ASO之苹果应用商店产品过审技巧

    1.重构代码框架与逻辑,修改文件名,添加垃圾代码和注释块,避免机审扫描被拒 2.修改元数据,应用价格、发布地区、产...

网友评论

      本文标题:关于修改代码逻辑思路

      本文链接:https://www.haomeiwen.com/subject/vokwvftx.html