这个类有三种方法做同样的事情,他们在等待三秒页面加载,如果在页面加载返回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
_我该如何决定哪一段代码最好?_你能更具体地询问一下你正在寻找什么吗?我对这类问题的一般回答是“最可读的版本”... –
这是我的问题。我知道所有三项工作,但我知道在这种情况下,不应使用匿名课程。在阅读有关成员内部类时,他们还明确地说,当不使用外部类变量时,请使用静态内部类。那么是否有一个规则或惯例也说明应该或不应该使用静态内部类?还是仅仅是偏好? –