程式開發質量檢查(六)

来源:互联网 发布:mac 下安装ant 编辑:程序博客网 时间:2024/04/30 11:49

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


 

publicfunction integerwf_chk_due_day(string as_due_day);

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


INT   li_day
SELECTTO_NUMBER(SUBSTR(LPAD(TRIM(:as_due_day),4,'0'),3))
 INTO :li_day
  FROMdual;


IFli_day > 31 OR li_day < 1THEN
 Return1
END IF


Return0
end function


 

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

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

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

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

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

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


publicfunction Booleanwf_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)


Returnmax(li_day,1)=min(li_day,31)


endfunction


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

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

 

 

原创粉丝点击