2012-01-24 57 views
0

我有一個根本沒有重構的代碼。我在某種程度上對它進行了重構。但是我停留在一個我無法想象的地步。重構的java代碼

Tractor.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(); 
} 

還有什麼可重構...任何建議嗎?

+3

除非您實際擁有'farm.com',否則您應該使用不同的包名稱。 – SLaks

+0

@SLaks所有在同一包...這就是爲什麼我使用它。 – user1147717

+2

這應該在codereview.stackexchange.com上。 –

回答

1

我會覆蓋您的TractorInDitchException中的所有Exception構造函數。

它沒有在任何地方使用。什麼會導致你拋出異常?

您可以用比指南針點更精細的控制順時針或逆時針轉動。我會重寫該方法以角度角度傳遞三角洲。

爲什麼硬連線位置和場陣列?將它們傳遞給構造函數。請說明它們的含義。

這裏沒有太多的抽象。我可以想到關於拖拉機的其他許多事情:速度矢量,加速度,重量,燃料消耗率,牽引能力等。這對我來說就像是一個貧血的領域模型。工作中幾乎沒有想象力。

+0

你是什麼意思,通過overiding異常consturctors?以及你在這些方法中的更好控制是什麼意思?你能否詳細說明一下。 – user1147717

+0

異常有四個構造函數 - 在您的類中覆蓋它們。看看javadocs。至於更好的控制,如果我向東走向死亡,順時針旋轉90度,當我完成時我正面向北方。我不能爲了東北航向而轉45度嗎?如何'回合10度?怎麼回合5?如何'回合1度?這就是我所說的「更好的控制」。並且逆時針旋轉90度不轉向-90度轉彎?如果你把它表示爲相對標題,這是一個更好的抽象。矢量在這裏更容易。 – duffymo

+0

好吧我現在重寫了四個構造函數..但仍然是更好的控制點,我很困惑如何實現它。 – user1147717