必须有一个更好的方法来写这个

时间:2011-05-28 11:29:29

标签: java

public static boolean isValidCoordinate(Coordinate point) {
    Point map = point.mapCoordinates, tileSet = point.tileSetCoordinates, tile = point.tileCoordinates, pixel = point.pixelCoordinates;
    if (map != null && map.x >= 0 && map.y >= 0) {
        if (tileSet != null) {
            if (tileSet.x >= 0 && tileSet.y >= 0) {
                if (tile != null) {
                    if (tile.x >= 0 && tile.y >= 0) {
                        if (pixel != null) {
                            if (pixel.x >= 0 && 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;
    }
}

坐标类包含4个Point对象,表示一组唯一的坐标。每组坐标都需要为正。 mapCoordinates不能为null,但是其他Points可以,只要它们之后的所有内容都为null,并且它们之前的所有内容都在此列表中为正:mapCoordinates,tileSetCoordinates,tileCoordiantes,pixelCoordinates。感谢

1 个答案:

答案 0 :(得分:8)

当然有。使用方法来保持DRY:

boolean isValid(Point p) {
    return p == null || (p.x >= 0 && p.y >= 0);
}

boolean isValid(Coordinate c) {
    return isValid(c.mapCoordinates)
        && isValid(c.tileSetCoordinates) 
        && isValid(c.tileCoordinates) 
        && isValid(c.pixelCoordinates);
}

是的,调用Point coordinate类型的变量和Coordinate point类型的变量可能会让读者感到困惑。