這個問題是由組織活動的公司使用的一個軟件。當活動發生變化時(狀態,開始時間,人數),需要通知某些人(通過電子郵件)。對此負責的代碼開始非常簡單:電子郵件正文包含所有舊值和已更改信息的新值。如何重構多個複雜的if-else分支
多年來,引入了許多小規則。例如:如果新狀態爲「已取消」,則郵件的主題應爲:「活動取消」而不是「活動已更改」。如果沒有以前的狀態(所以活動是新的),並且當前狀態是「最終」,則主題應該是「在[日期]上的新活動」,並且主體應該包含完整的概述(因此沒有改變)。
上面的這些規則只是爲了說明問題。還有更多(關於狀態/日期/時間等的組合),總計最多約500行代碼。
發生的問題是,此代碼目前很難理解和維護。新的規則時不時地被引入,並且添加它們而不破壞其他規則可能是一種痛苦。將這樣的代碼重寫成更容易理解和可維護的代碼的最好方法是什麼?目前,if-else分支的順序也非常重要。第一個if語句是最重要的,next else-if語句不那麼重要,直到最一般情況的最後else子句。
肯定聽起來像是一個不錯的選擇,將來看看這個。Drools對於這個應用程序似乎有點太多了,但是爲這個特定的情況編寫一個簡單的規則引擎不應該是太多的工作。你會如何推薦規則的排序? – Intru 2011-06-04 08:37:16
我想這也必須進入規則引擎。規則排序有什麼樣的邏輯?匹配規則是否會影響下一個規則?也許它可以減少到決策樹? – 2011-06-04 11:46:29