2012年12月25日 星期二

對錯之外,應再考量效能及維護性

重頭接觸PB,感覺自己像個失智,有點印象,但又不是很熟悉。

不管是PB還是C#,看到一長串的「if」判斷式,總是給人很難維護的fu;
而且沒有IT人的精神(嘿..嘿..嘿..)

像下面這一段
IF NOT (gstr_main.s_employee_dept_id = "5300" or gstr_main.s_employee_dept_id = "2000" or gstr_main.s_employee_dept_id='8200' or gstr_main.s_employee_id = "2085" or gstr_main.s_employee_id = "2939" or gstr_main.s_employee_id = "2393" or gstr_main.s_employee_id = "7591" ) THEN
 Messagebox("注意","您無使用權限")
 RETURN
 END IF

如果這類的權限管控,能透過一組完整的「系統」、「模組」或「函式庫」都可,再搭配資料庫, 不是很棒嗎?
但通常事與願違,資料庫不是開發人員負責維護管理,連異動欄位都要走一堆流程.... 看了這一段程式碼,僅針對s_employee_dept_id與s_employee_id進行驗證,故調整如下

Boolean lb_Auth = false
Integer li_x = 1
String ls_EmpID[] = {"2085","2393", "2939", "7591"}
String ls_SpecificDepID[] = {"2000", "5300", "8200"}
FOR li_x = 1 to UpperBound(ls_EmpID)
    IF gstr_main.s_employee_id = ls_EmpID[li_x] THEN
        lb_Auth = true
    END IF
Next

FOR li_x = 1 to UpperBound(ls_SpecificDepID)
    IF gstr_main.s_employee_dept_id = ls_SpecificDepID[li_x] THEN
        lb_Auth = true
    END IF
Next

IF NOT lb_Auth THEN
    Messagebox("注意","您無使用權限")
    RETURN
END IF

未來有人事異動,只要簡單維護陣列值即可;
但要重新compile

1 則留言:

  1. 我已經分不清楚 這些 if , for , while....的語法到底是屬於哪一種程式語言了

    回覆刪除