Я знаю, что вам не нужно мнение, но я все равно дам вам его: общего случая нет. Искусство проектирования программного обеспечения заключается в том, чтобы сделать правильный выбор в структуре данных и кода в зависимости от специфики приложения. ОО-языки дают вам более выразительную палитру для дизайна, но нет жестких и быстрых правил, которые применяются в любой ситуации.
Итак, это мнение. Теперь к вашему конкретному примеру. Я мог бы задать себе вопрос: что полезнее? Отдельная фигура, знающая, где она находится на доске, или доска, знающая, где находится каждая фигура? Если у вас нет отдельного понятия доски, то есть в виде двумерного массива, содержащего фигуры, вам придется спрашивать каждую фигуру, где каждый раз вам нужно что-то делать с фигурой. Это, возможно, хорошо, если у вас есть только несколько фигур, но это становится неэффективным, если у вас больше фигур.
И наоборот, если, скажем, у вас очень большая шахматная доска - 500x500 - и на ней всего пара фигур, то двумерный массив будет очень неэффективным, поэтому разреженная структура данных, вероятно, будет лучше.
Другой способ взглянуть на это: если у вас есть более одного куска, они будут храниться в какой-то структуре данных, возможно, в массиве, или в двумерном массиве, или в связанном списке, или в массиве. связанных списков или что-то еще. Какую структуру данных вы собираетесь выбрать и почему?