次のデザインのどれがAPIにとってより良いと思われますか?その理由は何ですか? MapWrapper
を単にマップへの参照を含むクラスであるAPIデザイン - オブジェクトまたはコレクションをパラメータとして使用しますか?
apiMethod(Map<A, B> aToB)
又は
apiMethod(MapWrapper<A, B> mapWrapper)
。
両方のアプローチの賛否両論は何ですか?
次のデザインのどれがAPIにとってより良いと思われますか?その理由は何ですか? MapWrapper
を単にマップへの参照を含むクラスであるAPIデザイン - オブジェクトまたはコレクションをパラメータとして使用しますか?
apiMethod(Map<A, B> aToB)
又は
apiMethod(MapWrapper<A, B> mapWrapper)
。
両方のアプローチの賛否両論は何ですか?
あなたは常に「最小限の」APIに努めます。この場合
:あなたのAPIは、地図を渡すときに動作します - そして、もちろん、あなたがそのパスを選択します。なぜあなたのクライアントに負担をかけるラップその地図に?
オプション1のプロは - これはまっすぐ進むパスです。
オプション2は、APIの使用を難しくするという欠点があります。
つまり、の「プロパティ」の「プロパティ」が「マップ」になっている場合は、マップとして渡す必要があります。しかし、 "中心的なテーマ"が何か違うなら、あなたは他のテーマに合ったものを渡します。
私はそれはあなたのAPIが本当に必要ないものを理解することは非常に困難ですので、APIのパラメータとしてMap
を使用することは悪い習慣だと思います。私はのような方法を発見したいくつかの古代のコードでは:
doSomeStuff(String aa, String bb){
return aa + bb;
}
と、あなたはあなたのAPIを呼び出すためにaa
とbb
が必要であることを知っている:
doSomeStuff(Session session){
String aa = session.get("aa");
String bb = session.get("bb");
return aa + bb;
}
このコードのリファクタリングになります。
一般的な 'Map'ではなく、モデルクラスをパラメータとして持つことをお勧めします。 'MapWrapper'も意味をなさない - それは価値を追加し、再び' Map'を持つだろうか? – lexicore
最初のものは、ラッパーを追加しても意味がありません。おそらくマップを使うよりも優れたデザインが可能でしょう。 – Oleg
の責任そのマップは何ですか? – Andrew