假設有一個在兩個層次上開發的庫:一個核心,一個低層次和一個高層次。我的設計側重於減少兩者之間的耦合。封裝枚舉或不?
其中一個高層次的例程接受枚舉(例如,FOO = 0,BAR = 1,BAZ = 2)。該枚舉由低級例程直接用於其最終目的。
爲了設計此,我有三種選擇:
- 高電平例程接受包封到高電平模塊枚舉,並且翻譯一到一個高電平枚舉到低級別的枚舉值。優點:降低耦合。缺點:我有點重複我自己
- 高級別例程接受低級模塊的枚舉值,並「按原樣」傳遞它。優點:少打字,減少重複。缺點:耦合度更高。
- 我創建了一個「枚舉模塊」,它是外部的,兩個級別都依賴於這個枚舉模塊。優點:概念清晰。缺點:Uber全部模塊的枚舉不在代碼附近。
您對此案有任何經驗嗎?我會選擇1,因爲它會減少耦合,但我也想聽聽你的經驗。