Этот класс имеет три метода, которые делают то же самое, они ожидают три секунды загрузки страницы и возвращают true, если страница загружена.
Мой вопрос: как мне решить, какой фрагмент кода лучше?
Я знаю, что Lambda is preferred above Anon classes, но почему статический вложенный класс (pageLoaded3) не прав? Согласно this post он также должен быть подходящим.Lambda vs Anon 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
_Как я могу решить, какой фрагмент кода лучше? _ Не могли бы вы попросить более конкретно то, что вы ищете? Мой общий ответ на этот вопрос - «самая читаемая версия» ... –
Это мой вопрос. Я знаю все три работы, но я знаю, что в этой ситуации класс анонов не будет использоваться. Когда вы читаете о внутренних классах членов, они также явно говорят, что если внешние переменные класса не используются, используйте статический внутренний класс. Итак, существует ли правило или соглашение, в котором также говорится, что статический внутренний класс должен или не должен использоваться? Или это просто предпочтение? –