Стоит ли использовать 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 шт):
Нет, не стоит. Более того, стоит делать не-статик. Почему -- это порождает технический долг.
В общем:
Такой код сложнее тестировать (в смысле писать тесты к нему). Когда игра разрастется, вам захочется написать тесты, т.к. ручное тестирование станет утомительным.
Такой код сложнее масштабировать (чтобы в одном сервере обслуживать несколько игровых сессий).
Такой код сложнее поддерживать, модифицировать и переиспользовать.
Тот, кто будет с ним работать (в том числе и вы сами), будет сожалеть о том что это статик, и о том сколько это приносит ограничений, и о том, сколько сил надо потратить чтобы эти ограничения снять переделав его в нестатик класс.
В частном:
В этом коде вообще не видно пользы от статика, это никак не облегчит решение задачи (разве что, вы не привыкли еще к java и вам кажется что будет сложно помнить как и куда тащить этот объект, и кажется что проще сделать статиком; если это ваш случай, попробуйте сразу со spring'а начать).

