程式開發質量檢查(四)

某次在檢查開發人員的PB源碼時,發現有如下代碼:

 

<!-- @page { margin: 2cm } -->

CHOOSE CASE ls_query_kind

    CASE '1'

        ls_SqlText = ls_SqlText + "AND M_DISCM.CHK_ID IN (21,26,178) AND M_DISCM.FROM_MK = '0'"

        ls_SqlText1 = ls_SqlText1 + "AND M_DISCM.CHK_ID IN (21,26,178) AND M_DISCM.FROM_MK = '0'"

    CASE '2'

        ls_SqlText = ls_SqlText + "AND M_DISCM.CHK_ID IN (76,78,79,5059,201,202,77,177) AND M_DISCM.FROM_MK = '0'"

        ls_SqlText1 = ls_SqlText1 + "AND M_DISCM.CHK_ID IN (76,78,79,5059,201,202,77,177) AND M_DISCM.FROM_MK = '0'"

    CASE '3'

        IF ls_from_mk = '4' THEN

            ls_SqlText = ls_SqlText + "AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"

            ls_SqlText1 = ls_SqlText1 + "AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"

        ELSE

            ls_SqlText = ls_SqlText + " AND M_DISCM.FROM_MK = '" + ls_from_mk + "'" + " AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"

            ls_SqlText1 = ls_SqlText1 + " AND M_DISCM.FROM_MK ='" + ls_from_mk + "'" + " AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"

        END IF

END CHOOSE

 

這是PB數據窗口動態查詢語法構建.

<!-- @page { margin: 2cm } -->

因為有兩個數據窗口都需要動態調整 , 所以這里定義了兩個變量 ls_sqltext ls_sqltext1.

實際上這兩個數據窗口需要構造的語法都是一樣的 , 如上寫法都是同時給這兩個變量賦值 .

這樣造成同一個條件需要寫兩次 , 而且如果以后需要修改的話 , 也同時要改兩個變量 .

 

<!-- @page { margin: 2cm } -->

更好的方法應該是將動態構造的條件先賦值給一個臨時變量 ,

最后將這個臨時變量再與 ls_sqltext,ls_sqltext1 組合 .

如:

<!-- @page { margin: 2cm } -->

string ls_temp
CHOOSE CASE ls_query_kind
   CASE '1'
      ls_temp =  "AND M_DISCM.CHK_ID IN (21,26,178) AND M_DISCM.FROM_MK = '0'"
   CASE '2'
      ls_temp =  "AND M_DISCM.CHK_ID IN (76,78,79,5059,201,202,77,177) AND M_DISCM.FROM_MK = '0'"
   CASE '3'
      IF ls_from_mk = '4' THEN
         ls_temp =  "AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"
      ELSE
         ls_temp =" AND M_DISCM.FROM_MK = '" + ls_from_mk + "' AND M_DISCM.CHK_ID IN (21,26,76,78,79,177,178,201,202,77,5059)"
      END IF
END CHOOSE


ls_sqltext += ls_temp
ls_sqltext1 += ls_temp

 

這樣可以減少維護人員的工作,簡化代碼.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值