107怎样理解:程序员需要严谨

Posted 小雷FansUnion

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了107怎样理解:程序员需要严谨相关的知识,希望对你有一定的参考价值。

雷观:1个小问题,考虑不周全,就是N个小时的排查和压抑。疯了。

一、每一种可能性,都需要去思考

//当前跟进人

         UserVo currentFollowUser=currentFollowUser(currentFollowUserList,oldFollowUserId);

         customerVo.setCurrentFollowUser(currentFollowUser);

         if(currentFollowUser!=null)

             customerVo.setCurrentFollowUserId(currentFollowUser.getId());

         else 

             customerVo.setCurrentFollowUserId(YnEnum.NO.getCode());

         

以上为例,

currentFollowUser为null的时候,是否需要给默认值。

如果不给默认值,就意味着不变。

但是,没有当前跟进人,实际上需要把 当前值更新为 NULL,或者0。

二、所有的可能性

数学归纳,所有的情况。

逻辑推理,考虑所有的可能性。

事件的因素,每一个潜在因素。

只要有一丁点未知的事情,被有意或无意忽略了,就埋下了灾难的种子。

三、绑定关系

  private List<UserInfo> userListWithBindUser()

        UserInfo entity = new UserInfo();

        entity.setIsDeleted(YnEnum.NO.getCode());

        List<UserInfo> userListWithBindUser=userCrudService.list(entity );

        return userListWithBindUser;

    

找到所有关联关系,刷新对应 表的数据

   //所有关联到的老用户oldUserList (有问题)

        List<AuthUserVo>  oldUserList=authUserService.queryByOldUserIdList(oldUserIdList);

A表和B表,维护了关联关系,互相冗余了对方的id。

从信息的简化角度,A表维护B表的id即可。

从查询的角度,B表维护A表的id,方便B表数据快速关联查询到A表的id。

上述代码的逻辑:查询A表所有,包含了绑定关系的用户,然后根据此关系map去刷新B表冗余的id。

问题:

A 12 绑定 B 11.

此时 A 12 重新绑定 B 10.

那么,实际代码:只重新更新B表的 B 10 - A 12,漏掉了 B 11 → NULL。

严谨表述:一次绑定关系的变化,涉及到2个表,3条记录的变化。 新的关系:A12->B10,B10->A12。老的关系清除:B11->NULL。

当时,为什么要这么写,为了“性能”。

有绑定关系的才维护双向绑定关系,听起来也没毛病。

实际则不然。

以上是关于107怎样理解:程序员需要严谨的主要内容,如果未能解决你的问题,请参考以下文章

107怎样理解:程序员需要严谨

99怎样理解:程序员需要严谨

第107期:NLP—女人怎样请求支持,才能如愿以偿

shell多线程

优秀程序员和普通程序员都是怎样过完一天的

STM32F107+LWIP怎样判断网络已经连接成功或断开的