这段代码有更短的版本吗?

时间:2016-12-05 05:25:48

标签: java android

这是否有更短的版本?你能解释为什么你认为它是一个更短/更好的版本吗?

switch (v.getId()) {
            case R.id.buttonUP:
                moveOBJECT.setY((moveOBJECT.getY() >= 0) ? moveOBJECT.getY() - 15 : moveOBJECT.getY());
                break;
            case R.id.buttonDOWN:
                moveOBJECT.setY((moveOBJECT.getY() + moveOBJECT.getHeight() < img.getHeight()) ? moveOBJECT.getY() + 15 : moveOBJECT.getY());
                break;
            case R.id.buttonLEFT:
                moveOBJECT.setX((moveOBJECT.getX() >= 0) ? moveOBJECT.getX() - 15 : moveOBJECT.getX());
                break;
            case R.id.buttonRIGHT:
                moveOBJECT.setX((moveOBJECT.getX() + moveOBJECT.getWidth() < img.getWidth()) ? moveOBJECT.getX() + 15 : moveOBJECT.getX());
                break;
        }

1 个答案:

答案 0 :(得分:1)

如果不重构代码,我认为没有办法缩短代码。

也许更好的方法是将getId()调用传递给moveObject.move(v.getId())并让moveObject类处理移动。

....... somewhere on your code
moveOBJECT.move( v.getId() );
.......

class MoveOBJECT extends view {
    public void move( enum buttonPressed key) {
        switch (key) {
                case R.id.buttonUP:
                    Y = Y >= 0 ? Y - 15 : Y;
                    break;
                case R.id.buttonDOWN:
                    Y = Y + height < img.getHeight() ? Y + 15 : Y;
                    break;
                case R.id.buttonLEFT:
                    X = X >= 0 ? X - 15 : X;
                    break;
                case R.id.buttonRIGHT:
                    X = X + width < img.getWidth() ? X + 15 : X;
                    break;
            }
        }
    }