我有近乎多餘的java方法。這些方法的主體總是一樣的。只有一個或兩個java表達式(java代碼行)是不同的。我想對這些幾乎冗餘的方法進行代碼重構,但我正在尋找最好的方法來做到這一點。這並不容易,因爲動態代碼行。如何在java方法中使用動態代碼?
這裏有三種方法具有相同的身體,但與dynmamic Java代碼吧:
public static final boolean doSomething1() {
Date date = new Date();
long currentTime = date.getTime();
long maxTime = currentTime + (TIMEOUT * 1000);
while (currentTime < maxTime) {
try {
//START OF MY DYNAMIC CODE
//example 1
for (WebElement element : list) {
if (element.isDisplayed()) {
element.click();
return true;
}
}
//END OF MY DYNAMIC CODE
}
catch (Exception e) {
LOG.error("exception");
}
currentTime = new Date().getTime();
}
return false;
}
public static final boolean doSomething2() {
Date date = new Date();
long currentTime = date.getTime();
long maxTime = currentTime + (TIMEOUT * 1000);
while (currentTime < maxTime) {
try {
//START OF MY DYNAMIC CODE
//example 2
for (WebElement webElement : webElementList) {
WebElement parent = getParentElement(webElement);
}
return true;
//END OF MY DYNAMIC CODE
}
catch (Exception e) {
LOG.error("exception");
}
currentTime = new Date().getTime();
}
return false;
}
public static final boolean doSomething3() {
Date date = new Date();
long currentTime = date.getTime();
long maxTime = currentTime + (TIMEOUT * 1000);
while (currentTime < maxTime) {
try {
//START OF MY DYNAMIC CODE
//example 3
for (WebElement element : list) {
if (element.isDisplayed() && element.getText().equalsIgnoreCase(size))
return true;
}
//END OF MY DYNAMIC CODE
}
catch (Exception e) {
LOG.error("exception");
}
currentTime = new Date().getTime();
}
return false;
}
那麼,怎麼可能自己寫一個方法與設置的代碼動感線條的機會?
實際上應該是哪一部分的我們的代碼「動態」?沒有辦法讓'if(false == true)'動態。你唯一能做的就是讓if語句中的條件動態化。但在最後一個例子中,有兩條動態行'System.out.println(「test」);如果(「測試」.equals(「測試」))',這根本不會工作。 – martinhh
我改變了我的代碼,使其更清楚我的意思。 – Martin