程式開發質量檢查(六)

在一段PB源碼中,有看到一個檢查日期的窗口函數如下:


 

public function integer wf_chk_due_day (string as_due_day);

// 檢察傳入的票期是否合法 返回 0 表示檢察通過 , 返回 1 表示票期的後兩碼不合法
//
票期供 4 , 前兩碼為月份數 , 後兩碼為某一天 ( 必須為 1-31 之前的某個數字 )


INT     li_day
SELECT T O_NUMBER(SUBSTR(LPAD(TRIM(:as_due_day),4,'0'),3))
  INTO :li_day
  FROM dual;


IF li_day > 31 OR li_day < 1 THEN
 Return 1
END IF


Return 0
end function


 

對於此函數定義及功能內容 , 我作如下意見說明 :

1. 此函數只是判斷一個數據是否合法 , 不必要使用 SQL 語法 ( 你們只喜歡 Oralce? 不喜歡 PB?).

2. 雖然目前的代碼已經比較簡單了 , 但我們還是可以精益求精 .

3. 為了增強程式的可讀性 , 不建議使用多重函數嵌套 ( 紅色部分 ).

4. 如果返回值只有兩類 , 建立使用布爾值類型 ( 為什麼呢 ? 請看我調整后的語法 .)

5. 我簡單修改后的另一個思維方法 , 請大家參考 .( 這個還沒有經過壓力測試 , 如有錯誤 , 請扔雞蛋 , 不要拍磚 .)


public function  Boolean wf_chk_due_day (string as_due_day);

// 返回值為 True, 則表示檢查通過 .

// 返回值為 False, 則表示后兩碼不合法 .

INT     li_day

as_due_day = right(rtrim(as_due_day),2) // PB 中參數變量是可以繼續賦值的 .

li_day = integer(as_due_day)


Return max(li_day,1)=min(li_day,31)


end function


6. 原來的語法其實就是取這個字串的后兩碼 , 所以我改為了使用 pb right 函數 .

7. 修改后的精華就是在 return 語法 , 這也是為什麼要將函數的返回值改為布爾值的原因 .

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值