【发布时间】:2016-08-01 09:20:41
【问题描述】:
我有几乎多余的 java 方法。这些方法的主体总是相同的。只有一两个 java 表达式(java 代码行)不同。我想对这些几乎多余的方法进行代码重构,但我正在寻找最好的方法来做到这一点。这不是那么容易,因为动态代码行。
以下是三个方法,它们的主体相同,但其中包含动态的 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"); if ("test".equals("test"))这根本行不通。 -
我更改了代码以更清楚地表达我的意思。
标签: java dynamic methods redundancy