Стоит ли использовать static?

Пишу консольную игру. Картой для игры служит простой многомерный массив. Вопрос: стоит ли карту для игры делать статичной? Просьба аргументировать ответ. P.S по карте будут перемещаться игроки.

Карта с игроками:

Карта с игроками

Карта без игроков:

введите сюда описание изображения

Мой код(там уже переделано все в статичное):

public class Map {

    private static String[][] cells = {
            {"  ", "[]", "  "},
            {"[]", "[]", "[]"},
            {"[]", "[]", "[]"},
            {"[]", "[]", "[]"},
            {"  ", "[]", "  "}};

    //Getters and Setters
    public static String[][] getCells() {
        return cells;
    }
    //

    //Метод для отображения карты
    public static void display() {
        for (int i = 0; i < getCells().length; i++) {
            for (int j = 0; j < getCells()[i].length; j++) {
                System.out.print(getCells()[i][j] + " ");
            }
            System.out.println();
        }
    }
}
public class Main {
    public static void main(String[] args) {

    Map.display();

    }
}

Ответы (1 шт):

Автор решения: Yury Nevinitsin

Нет, не стоит. Более того, стоит делать не-статик. Почему -- это порождает технический долг.

В общем:

  1. Такой код сложнее тестировать (в смысле писать тесты к нему). Когда игра разрастется, вам захочется написать тесты, т.к. ручное тестирование станет утомительным.

  2. Такой код сложнее масштабировать (чтобы в одном сервере обслуживать несколько игровых сессий).

  3. Такой код сложнее поддерживать, модифицировать и переиспользовать.

Тот, кто будет с ним работать (в том числе и вы сами), будет сожалеть о том что это статик, и о том сколько это приносит ограничений, и о том, сколько сил надо потратить чтобы эти ограничения снять переделав его в нестатик класс.

В частном:

В этом коде вообще не видно пользы от статика, это никак не облегчит решение задачи (разве что, вы не привыкли еще к java и вам кажется что будет сложно помнить как и куда тащить этот объект, и кажется что проще сделать статиком; если это ваш случай, попробуйте сразу со spring'а начать).

→ Ссылка