我正在開發一個網絡應用程序。用戶可以設置一些參數來運行一些算法。因此,當我在后端提取參數時,我想在啟動算法之前驗證它們,這可能會在長時間執行后崩潰。我應該在算法函數周圍使用裝飾器,還是應該將參數傳遞給像 def validate_parameters() 這樣的函數,如果參數不正確,它會引發錯誤?
1 回答

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
Python 的“請求寬恕而不是許可”的經驗法則是為了保持代碼的簡潔和易于理解。檢查代碼流程可以告訴您預期的路徑是什么,并且很明顯什么是異常條件。在這種情況下,不檢查輸入有兩個缺點,并且您可以將所有檢查隱藏在函數中,以便代碼干凈。我想說這里的 pythonic 代碼是這樣的
????if?not?valididate_parameters(params):? ???????????raise?ValidationException(get_validation_error_msg(params))
這里你的validate_parameters
函數只是做檢查。該get_validation_error_msg
函數負責生成可以呈現給用戶的內容的繁重工作。例如,它可以檢查驗證函數在出現任何錯誤時盡早退出的所有參數。請注意,您必須將 Exception 定義ValidationException
為 Exception 的子類并在更高級別捕獲它。
除了一般編程的想法之外,在 Django 中,如果您的參數來自用戶填寫的表單,您應該驗證表單代碼中的每個字段。
添加回答
舉報
0/150
提交
取消