私はしばしば、 "あなたが友人/内部が必要な場合はあなたのデザインが間違っています"といったようなことを言う人は、ChessPiece.Locationの内部を取り除くために次のコードを再設計する方法を教えてくれますか?友人や内臓を排除するのに役立ちます
これは現在、ChessBoardにピースを追加するとChessPiece.Locationプロパティが一致するように設定されているため、内部よりも悪化してプライベートにするとChessBoardが場所を更新できなくなります。どんな洞察にも感謝します。
public struct Coord
{
public Coord(int x, int y) { this.X = x; this.Y = y; }
public int X { get; private set; }
public int Y { get; private set; }
}
public class ChessBoard
{
public ChessBoard() { /*[...]*/ }
public ChessPiece this[int x, int y]
{
get
{
// Return ChessPiece at this position (or null)
}
set
{
// Add ChessPiece at this position and set its Location property
}
}
public class ChessPiece
{
public ChessPiece() { /*[...]*/ }
public Coord Location { get; internal set; }
}