
135、条件和逻辑表达式的简化那天半夜被电话叫醒,说是某个批处理作业跑挂了,日志里卡在一条IF语句上。我远程上去一看,代码长成这样:IF LV_FLAG = 'X' AND LV_TYPE 'A' AND LV_TYPE 'B'. ... ELSEIF LV_FLAG = 'X' AND LV_TYPE = 'C'. ... ENDIF.同事还振振有词,说逻辑没问题。逻辑是没问题,可这写法让人一眼看不出业务意图。更要命的是,旁边还有一段嵌套了四层的IF,整个方法体超过三百行,调试起来鼠标滚轮都要滑半天。后来我重构完,顺手把条件表达式里的重复判断全部消掉,运行时间没变多少,但维护的人(包括我自己)都长舒一口气。写ABAP的人常有一个错觉:只要结果对,代码丑点没关系。可真到出问题,你盯着那堆重复、嵌套、反向判断的逻辑,脑壳疼是小事,改错一个分支导致数据错乱才是大事。今天不聊高大上的编程理论,就聊聊怎么把条件和逻辑表达式写得像人话,让自己三个月后还能看懂。先看一个最常见的毛病:把简单条件写成“长链条”。比如判断一个内表是否有满足某个条件的行,新手喜欢这么干:LOOP AT LT_ITAB INTO LS_ITEM WHERE STAT = 'D' OR STAT = 'E'. LV_FOUND = 'X'. EXIT. ENDLOOP. IF LV_FOUND = 'X'. ... ENDIF.