我繼承了一組看似由不同人開發的插件。它們中的一些遵循一個主插件的模式,具有許多不同的步驟。在這個插件中,沒有一個步驟在功能上是內聚的或相關的,作者只是將它們全部放在同一個插件中,插件的內部代碼(if/else madness)處理各種不同的實體,crm消息(更新,創建,刪除等)和階段(預驗證/後期操作等)。CRM 2011插件開發最佳實踐
其他開發人員似乎爲每個實體類型和/或相關功能分組製作插件。這導致多個更小的插件和更少的步驟。
我的問題是這樣的,假設我已經構建了一個出路,以前的開發人員在'one-plugin-to-rule-them-all'設計中創建了if/else地獄,哪種方法更適合從CRM績效和長期維護(如更少的副作用和部署困難等)視角?
沒有太多的問題:你已經命名爲one-plugin-rule-them-all的每一個缺點。根據我的經驗,對Pipeline Stage,Step Attributes和Post/Pre-Images的細粒度控制可提供更好的可維護性和性能。 – Filburt
由於該級別的控制是在配置插件步驟時完成的,因此您不會因爲one-plugin而失去任何可配置性來統一它們。 – Bitfiddler
正如我所提到的,我已經想出了一種方法來架構刪除if/else地獄,所以即使這不是問題。我的問題主要是最後一句話。是否在一個插件中處理了所有內容會產生新插件開發人員可能不知道的任何後果。 CRM中的處理和實體交互可能非常複雜,我正在尋求反饋意見,看我是否應該花時間分解大插件,或者是否應該將較小的插件合併爲較大的插件。如果這不是一個問題,那麼讓其他人來處理它。 – Bitfiddler