我有近乎多余的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