0

まったくリファクタリングされていないコードがあります。ある程度リファクタリングしましたが、これ以上何も考えられないところに行き詰まりました。

トラクター.java:

   package com.farm;

public class Tractor implements MethodsInterface{

private int[] position;

private int[] field;

private String orientation;

public Tractor(){
    position  = new int[]{0,0};
    field = new int[]{5,5};
    orientation = "N";
}

public void move(String command) {
if(command=="F"){
moveForwards();
}else if(command=="T"){
turnClockwise();
}

}

private void moveForwards() {
if(orientation=="N"){
position = new int[]{position[0], position[1]+1}; }else if(orientation == "E"){ position = new int[]{position[0]+1, position[1]}; }else if(orientation == "S"){ position = new int[]{position[0], position[1]-1}; }else if(orientation == "W"){ position = new int[]{position[0]-1, position[1]}; } if(position[0]>field[0]||position[1]>field[1]){

try {
    throw new TractorInDitchException();
} catch (TractorInDitchException e) {
    e.printStackTrace();
}

}

}

private void turnClockwise() {
if(orientation=="N"){
orientation = "E";
}else if(orientation == "E"){
orientation = "S";
}else if(orientation == "S"){
orientation = "W";
}else if(orientation == "W"){
orientation = "N";
}
}


public int getPositionX() {
return position[0];
}

public int getPositionY() {
return position[1];
}

public String getOrientation() {
return orientation;
}
}

TractorInDitchException.java

package com.farm;

public class TractorInDitchException extends Exception{

}

MethodsInterface.java

package com.farm;

public interface MethodsInterface {

    public int getPositionX();
    public int getPositionY();
    public String getOrientation();
}

他に何をリファクタリングできますか...何か提案はありますか?

4

1 に答える 1

1

Exception内のすべてのコンストラクターをオーバーライドしますTractorInDitchException

どこにも使用されていません。その例外をスローする原因は何ですか?

コンパスポイントよりも細かい制御で、時計回りまたは反時計回りに回転できます。そのメソッドを書き直して、方位角のデルタを渡します。

位置配列とフィールド配列が固定配線されているのはなぜですか? それらをコンストラクターに渡します。それらが何を意味するかについて、いくつかの指示を与えてください。

ここではあまり抽象化していません。速度ベクトル、加速度、重量、燃料消費率、けん引能力など、トラクターについて他にも多くのことを考えることができました。これは貧血領域モデルのように感じます。仕事には想像力がほとんど、またはまったくありません。

于 2012-01-24T01:46:52.047 に答える