這個類有三種方法做同樣的事情,他們在等待三秒頁面加載,如果在頁面加載返回true。
我的問題是,我該如何決定哪一段代碼最好?
我知道Lambda is preferred above Anon classes,但爲什麼是靜態嵌套類(pageLoaded3)不好?根據this post它也應該適合。LAMBDA VS匿名VS Static Nested Class和
public final class ExpectedConditions {
private ExpectedConditions() {
}
public static ExpectedCondition<Boolean> pageLoaded1() {
return (driver) -> {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return !((JavascriptExecutor) driver).executeScript("return performance.timing.loadEventEnd", new Object[0])
.equals("0");
};
}
public static ExpectedCondition<Boolean> pageLoaded2() {
return new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return !((JavascriptExecutor) driver)
.executeScript("return performance.timing.loadEventEnd", new Object[0]).equals("0");
}
};
}
public static ExpectedCondition<Boolean> pageLoaded3() {
return new PageLoaded();
}
private static class PageLoaded implements ExpectedCondition<Boolean> {
@Override
public Boolean apply(WebDriver driver) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return !((JavascriptExecutor) driver).executeScript("return performance.timing.loadEventEnd", new Object[0])
.equals("0");
}
}
}
這是三種方法的返回類型的接口:
public interface ExpectedCondition<T> extends Function<WebDriver, T> {}
您的三個方法在功能上是等同的(您的代碼將執行相同的操作)。是什麼讓你認爲一個靜態嵌套類是不合適的? – assylias
_我該如何決定哪一段代碼最好?_你能更具體地詢問一下你正在尋找什麼嗎?我對這類問題的一般回答是「最可讀的版本」... –
這是我的問題。我知道所有三項工作,但我知道在這種情況下,不應使用匿名課程。在閱讀有關成員內部類時,他們還明確地說,當不使用外部類變量時,請使用靜態內部類。那麼是否有一個規則或慣例也說明應該或不應該使用靜態內部類?還是僅僅是偏好? –