たとえば、ゲームのAPIを設計する場合。データ構造をプライベートに保つ方が良いでしょうか、それとも、優れた設計と見なされるAPIを使用している開発者/開発者に構造を返すのでしょうか?だからここに例があります。
チェス盤のゲームAPIがあると仮定します。次の2つの例のどちらが「より良い」と見なされますか?この質問の目的のために、私はチェス盤のサイズが変化する可能性があり、開発者によって制御されると想定していることに注意してください。
public void createboard(ChessBoard board);
public void move(Player playerNumber, Move move);
また
public void createboard(int x, int y);
public void move(Player playerNumber, int from[], int to[]);
これ以上の答えはないかもしれませんが、それは設計上の決定の問題であることを理解しています。私は他の人がどう思うか、または誰かが持っている有用なヒントがあるかどうかを見ようとしています。
基本的に、ゲームには実際のボードの2D配列を含むChessBoardというオブジェクトが含まれていると想定しています。
最初の例では、開発者がオブジェクトを作成して渡す必要があり、開発者は基礎となるデータ構造が何であるかを実際に知っている必要があります。
ただし、2つ目は、開発者が数字のみを渡す必要があります。これは、これを使用する開発者に独自のデータ構造を維持するように要求します。
より良いデザインを検討するアプローチはどれですか?任意のヒント?