2016-12-05 4 views
2

これのための短いバージョンはありますか?あなたはそれをより短い/より良いバージョンと考える理由を説明できますか?このコードの方が短いバージョンはありますか?

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; 
     } 
+0

これは良いです。いいえ短くする必要はありません –

+0

@Divyesh誰かが私は1行でこれを行うことができます、私はちょうどそれがどのように行われ、どのメソッドや概念を使用するか知りたいと思うことを意味します。 – wynrar

+0

'getx、y'は冗長です –

答えて

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; 
      } 
     } 
    } 
+0

私は新しいクラスを作成し、それが動きを処理することを意味するのですか? ああ、btw moveOBJECTはクラスではないビューです。悪い変数の名前をつけて申し訳ありません。 – wynrar

+0

私はそれを認識していませんでした。おそらく、ビュークラスを拡張し、それにgetIdを渡すmoveメソッドを追加します。このアプローチでは、他の場所に移動するコードを短縮することはできませんが、moveOBJECT.getXは必要ありません。既にクラスインスタンスの内部にあるため、Xになります。 – doddi76

+0

あなたがここでやっているように、オブジェクトに対してたくさんのget/set要求を行うことは、常にデザインの「匂い」であり、コードはそのクラスに移動されるべきです。 – doddi76

関連する問題