2017-09-04 28 views
2

以下哪種設計被認爲對API更好?爲什麼?API設計 - 使用對象還是集合作爲參數?

apiMethod(Map<A, B> aToB)

apiMethod(MapWrapper<A, B> mapWrapper) 其中MapWrapper是簡單地包含對地圖的引用的類。

這兩種方法的優缺點是什麼?

+0

我希望有一個模型類作爲參數,而不是通用的'Map'。 'MapWrapper'也沒有意義 - 增加的價值會有'Map'嗎? – lexicore

+0

第一個,添加一個包裝是沒有意義的。可能比使用地圖更好的設計是可能的。 – Oleg

+0

那個地圖是由什麼負責的? – Andrew

回答

3

您一直在努力尋找「簡約」的API。

在這種情況下:當您的API在傳遞地圖時工作 - 那麼當然您選擇該路徑。爲什麼把你的客戶的負擔放在首位換行那地圖?!

選項1的專業人員是 - 這是直線前進的道路。

儘管選項2只有使其難以使用API​​的缺點。

換句話說:如果中央該屬性的「屬性」是「要成爲一個地圖」 - 那麼它應該作爲地圖傳遞。但是,當「中心主題」是不同的 - 那麼你傳遞了其他主題的東西。

0

我認爲使用Map作爲API的一個參數是不好的做法,因爲很難理解你的API真正需要什麼。在一些古老的代碼,我發現類似的方法:

doSomeStuff(Session session){ 
    String aa = session.get("aa"); 
    String bb = session.get("bb"); 
    return aa + bb; 
} 

這段代碼的重構將是:

doSomeStuff(String aa, String bb){ 
    return aa + bb; 
} 

,你知道你需要aabb打電話給你的API。