下面是從數據庫規範化理論的一個概念:當一個非鍵字段是一個關於其他非關鍵領域其實功能「正常化」
第三範式受到侵犯。
對於函數/函數參數應用類似的概念是否合理?
考慮以下功能:
function validate(field, rule_name, rule_value);
// Usage
validate("password", "min_length", 6);
validate("password", "matches_regex", "/^\S+$/");
在這個例子中的功能,第三個參數描述了第二,似乎沒有「態度」朝第一。這種感覺就像一種非規範化的功能。
我不知道我是否正在制定這個權利,但我可以注意到表名和表字段,數據庫中的類比以及函數名和函數參數。
如果這種類比是有道理的,那麼功能設計師是否會從DB歸一化理論中借鑑概念?
我很高興你發佈這個,因爲現在我知道這不僅僅是我覺得這個功能有問題。但是,它是什麼讓它感覺不對?它違反了什麼「規則」? – 2011-02-28 16:55:53
@Emanuil如果我想刺探它,原始函數會違反關注點分離:@ MadKeithV的方法允許'validate'函數注入其實際驗證行爲,這使得它具有高度可重用性。即使使用簡單的例子,原始文件也需要多個簽名來適應不同數據類型的規則。 – 2011-02-28 17:57:08
@djacobson - 是的,謝謝,這實際上是我心中的想法。驗證成爲具有一個簽名的單個函數,「規則」變成了一個抽象,可以輕鬆擴展以處理任何「字段」字符串,並返回布爾值來表示字符串是否通過驗證。 – 2011-03-01 08:05:42