功能运算符COND与IF?

2020-09-03 14:52发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我喜欢在日常编码中使用ABAP功...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我喜欢在日常编码中使用ABAP功能运算符,但有时我质疑此类编码块的可读性(简洁性)。

我目前所拥有的:

 R_RESULT
 = cond#(
     当I_PARAM初始时
          和UTILITY-> FOO()<> IF_ENUM => CONSTANT-UNDEFINED
       然后抛出CX_ERROR(消息E004(MSG_CLS))
     当I_PARAM不是初始的
       然后cond#(当I_SOME_FLAG = ABAP_TRUE
                      然后抛出CX_ERROR(消息E006(MSG_CLS)与I_PARAM)
                    其他ABAP_TRUE))。

我可以使用IF以旧的详细方式重写代码:

如果I_PARAM是初始的
    和UTILITY-> FOO()<> IF_ENUM => CONSTANT-UNDEFINED。
   引发异常类型CX_ERROR消息E004(MSG_CLS)。
 else I_PARAM不是初始的。
   如果I_SOME_FLAG = ABAP_TRUE。
     使用I_PARAM引发异常类型CX_ERROR消息E006(MSG_CLS)。
   其他。
     R_RESULT = ABAP_TRUE。
   万一。
 endif。

IMO,第一个代码段是" cleaner",因为乍一看,我可以看到该COND功能块仅向我返回R_RESULT。 在第二个片段中,情况并非如此。

我想听听您对此的看法。

BR,

苏哈斯

3条回答
宇峰Kouji
2020-09-03 15:21

很高兴看到这样的问题至少偶尔出现一次 。 :)

只有我的0.02美元。 我认为在这种情况下,我们处在样式范围内,而不是对或错,而是个人偏好而不是其他任何事情。

有了免责声明,在这种情况下,我更喜欢IF ...版本,因为我 可以更轻松地跟随它。 这不是因为我是不喜欢COND的ABAPosaur,而是因为正如其他人所述,在这里例外与值分配混在一起。 如果不是这种情况,那么COND选项可能会更好。

作为旁注,无论哪种情况,它都会使我感到困惑,如果i_param是INITIAL,但是第二个AND UTILITY ...条件不是 完整的IF语句将被跳过。 仅仅通过查看代码,我就无法判断它是故意的还是疏忽大意。 同样,我通常也不喜欢许多嵌套的IF,但是在这种特殊情况下,我感觉像是将第一个IF ... AND ...分解为单独的语句,这将允许将ELSEIF ...更改为简单的ELSE。 这样可以减少冗长,并且从调试的角度来看更方便。 正如Sandra正确指出的那样,对于自动化测试而言,这不是问题。

一周热门 更多>