#java
#java
Вопрос:
public static boolean isValidCoordinate(Coordinate point) {
Point map = point.mapCoordinates, tileSet = point.tileSetCoordinates, tile = point.tileCoordinates, pixel = point.pixelCoordinates;
if (map != null amp;amp; map.x >= 0 amp;amp; map.y >= 0) {
if (tileSet != null) {
if (tileSet.x >= 0 amp;amp; tileSet.y >= 0) {
if (tile != null) {
if (tile.x >= 0 amp;amp; tile.y >= 0) {
if (pixel != null) {
if (pixel.x >= 0 amp;amp; pixel.y >= 0) {
return true;
}
else {
return false;
}
}
else {
return true;
}
}
else {
return false;
}
}
else {
return true;
}
}
else {
return false;
}
}
else {
return true;
}
}
else {
return false;
}
}
Класс coordinate содержит 4 точечных объекта, представляющих уникальный набор координат. Каждый набор координат должен быть положительным. Координаты карты не могут быть нулевыми, но другие точки могут, если все, что после них, равно нулю, а все, что перед ними, является положительным в этом списке: mapCoordinates, tileSetCoordinates, tileCoordiantes, pixelCoordinates. Спасибо
Комментарии:
1. Действительно серьезно неоднозначное название вопроса.
2. просто сведите эти ветви if и else в одно логическое уравнение.
3. Если вы откроете этот код в IntelliJ и нажмете Alt Enter достаточное количество раз, это упростит это для вас.
Ответ №1:
Конечно, есть. Используйте методы для сохранения DRY:
boolean isValid(Point p) {
return p == null || (p.x >= 0 amp;amp; p.y >= 0);
}
boolean isValid(Coordinate c) {
return isValid(c.mapCoordinates)
amp;amp; isValid(c.tileSetCoordinates)
amp;amp; isValid(c.tileCoordinates)
amp;amp; isValid(c.pixelCoordinates);
}
И да, вызов переменных типа Point
coordinate
и переменных типа Coordinate
point
, скорее всего, собьет читателя с толку.
Комментарии:
1. 1: Создание координаты
c
понятнее, но вы должны изменить все способы использования. т. е.s/point/c/
😉2. Ага, я пропустил return true среди всех тех, которые возвращают false … исправлено.
3. Все еще не эквивалентно, поскольку map не может быть true. Хотя все еще 1.