欢迎光临散文网 会员登陆 & 注册

《我的来世是个包裹》开发日志0324

2020-03-25 21:56 作者:紫数  | 我要投稿

又发现了自己之前一个很不好的编程习惯……就是if条件判断喜欢用&&把各个条件合并到一起。其实更健康的做法是写两层if。

拿《我的来世是个包裹》的代码来举例。有一段代码是这样的:

                    if (isStoryModeOn && !GameSlot.IsMsgBoxOn)

                    {

                        UpdateShowStorySpeak();

                        CheckMissionComplete();

                        CheckItemInAndOut();

                        CheckExitStoryParagraph();

                    }

                    else

                    {

                        AutoSave();

                    }

意思是,非故事模式(调试模式下)调用自动存档判断方法(存档时间间隔在AutoSave方法里处理了,不写在外面),故事模式下且消息框不弹出的时候执行各个逻辑检测流程。

我很惊讶之前放着逻辑漏洞那么大的代码无视。明显不能这么写。这样会导致故事模式下只要一弹出对话框就会自动保存,我脑子真的有坑。正确的写法是:

                    if (isStoryModeOn)

                    {

                        if (!GameSlot.IsMsgBoxOn)

                        {

                            UpdateShowStorySpeak();

                            CheckMissionComplete();

                            CheckItemInAndOut();

                            CheckExitStoryParagraph();

                        }

                    }

                    else

                    {

                        AutoSave();

                    }

没错,
 if (条件1 && 条件2)  {语句1;语句2;……;语句n}

 if (条件1) { if(条件2){语句1;语句2;……;语句n}}
是等价的。
但是
 if (条件1 && 条件2)  {语句1;语句2;……;语句n;}else{语句m;}

 if (条件1) { if(条件2){语句1;语句2;……;语句n}}else{语句m;}
完全不等价!

看了下面这张图你们就明白了:


基本功不扎实的下场……

《我的来世是个包裹》开发日志0324的评论 (共 条)

分享到微博请遵守国家法律