Что лучше: l oop через двумерный массив n пар значений или n операторов if? - Java - PullRequest
0 голосов
/ 29 мая 2020

Мне нужно оценить объекты, смежные с моим текущим объектом. Он может быть сверху, снизу, слева и справа от моего текущего положения. Если моя текущая позиция (x, y), тогда мои соседние объекты находятся в позициях: (x-1, y), (x+1, y), (x, y-1), (x, y+1).

Лучше рассчитать эти 4 позиции, а затем сохранить их в 2D-массиве, обходя их с помощью for... in l oop:

int[][] adjacentObjects = {
          {x-1, y},
          {x+1, y},
          {x, y-1},
          {x, y+1} };

for (int[] adjacent : adjacentObjects) { ...
  if (adjacent[0] == ...) // x coordinate
  if (adjacent[1] == ...) // y coordinate

Или мне лучше иметь 4 почти идентичных оператора if? Каждая будет состоять из 4 строк, где единственное различие - координаты x и y.

Мое текущее мышление состоит в том, что for... in l oop чище, хотя и не так читабельно, но я на самом деле не знаю, что «лучше».

Я также подумал об использовании другого метода, в котором я бы передал значения x и y, но мне также нужен доступ к еще двум 2D массивы в текущем методе, и кажется бесполезным отправлять их в качестве параметров и в новый метод.

Я использую Java, но я не чувствую, что это c специально для любого один язык. Любая помощь приветствуется!

...