2011-05-12 19 views
0

我在寫一個簡單的表單驗證腳本的過程中,不知道它是否是更好的做法(無論是在這個腳本,並在總體規劃的範圍內),以承擔失敗是成功和測試,還是最好假設失敗,然後嘗試確保每個項目都成功。假設成功或失敗 - 有益處嗎?

我對這個主題進行了搜索,只是被一串鼓舞人心的報價打了,而且如果有一種情況會有所作爲,那麼如果一種方法更好/更安全/另一個更有效率?

目前我測試的方式是這樣的:

validation = true 

for each field 
{ 
    if not validate(field) 
    then validation = false 
} 

return validation 

我在這種特殊情況下看到的唯一的好處,就是在沒有辦法證明的情況下,提交表單。

回答

1

隨着只是問題的一個粗略的探索,我認爲這個問題歸結到是否是最佳的設計包括或默認排除數據。

假定值A,B和C的集合,也有用於結果的兩個可能的標準被接受:1.所有的值必須是有效的,或2.否值必須無效。

在第一種情況下,人們會用的前提下開始,默認的結果是假的,直到所有值進行了驗證,並在第二次,直到被證明是錯誤的一個無效值默認情況是真實的。

爲了說明,假設包含表單:

First Name: [ ] (required) 
Last Name: [ ] (required) 
Tel Number: [ ] (required) 
Email Addr: [ ] 

在可能的校驗可能是:

First Name must not be empty and must contain alpha chars only. 
Last Name must not be empty and must contain alpha chars only. 
Tel Number must not be empty, must contain numbers only, formatted as (xxx) xxx-xxxx. 
Email Addr if not empty, must be formatted as [email protected], etc. 

這種情況是包容性的,所有的驗證規則必須返回true的輸入是可以接受的。因此,默認值應該是錯誤的,直到證明是正確的。

現在考慮這部分的形式發送電子郵件:

Subject: [ ] 
CC:  [ ] 
BCC:  [ ] 
Priority: [ ] 

由於所有字段都是可選的,這是獨特的情況下它是有意義開始與假設數據是有效的,直到他們被一個不可接受的價值證明是無效的。

+0

確切的反駁可以爲您的表單情況進行說明:假設真實,只要任何測試失敗返回false。這裏的另一個相關問題是,即使失敗,是否需要運行所有驗證。 – CPerkins 2011-05-18 16:51:03