Прежде всего, я должен отметить тот факт, что не имеет смысла, по крайней мере для меня, метод, который вычисляет, являются ли два объекта горизонтальным или вертикальным и эти объекты Очки . Как две точки могут быть горизонтальными или вертикальными?
isHorizontOrVertical - это плохое имя
Преодолевая вышесказанное, вы можете создать один метод, который вычисляет, являются ли две точки горизонтальными или вертикальными.
Измените имя isHorizontOrVertical , поскольку оно избыточно. Лучшее имя - isHor Horizontal или isVertical . Метод вернет логическое значение, поэтому, если isHor horizontal возвращает false, то он вертикальный и наоборот. Возможно, лучшим именем могло бы быть areTwoPointsHor Horizontal , но у меня возникают проблемы даже при написании этого, поскольку оно передает неправильное сообщение, но вы можете выбрать свое собственное.
Так что метод,
public boolean isHorizontal(Point first, Point second){
boolean sameFirstComponents = firstPoint.getFirstComponent() ==
secondPoint.getFirstComponent();
boolean sameSecondComponents = firstPoint.getSecondComponent() ==
secondPoint.getSecondComponent();
return sameFirstComponents || sameSecondComponents;
}
Наконец, создайте метод, который вычисляет, находится ли произвольное количество точек в списке между ними по горизонтали или вертикали (при условии , если точка A горизонтальна с точкой B, тогда, если точка C горизонтальна с B, то же самое с A ).
Oveload этот метод, поскольку он делает то же самое, и единственное, что меняется, это параметры. (Обратите внимание на использование простого isHor Horizontal метода сверху)
public boolean isHorizontal(List<Point> points){
boolean allPointsHorizontal = true;
for (int i=0; i<points.size(); i++) {
boolean nextPointExists = i<points.size() - 1;
if (nextPointExists) {
Point current = points.get(i);
Point next = points.get(i+1);
allPointsHorizontal = allPointsHorizontal && isHorizontal(current,next);
if (!allPointsHorizontal)
return false;
}
}
return allPointsHorizontal;
}