Является ли создание функции для выполнения небольшой повторяющейся задачи анти-паттерном? - PullRequest
2 голосов
/ 15 апреля 2020

Я пытаюсь изучить лучшие практики для программирования и хочу, чтобы мой код был как можно более чистым, но также и обслуживаемым. Например, я запускаю программу, которая ожидает создания каждого элемента.

a.waitForElementToAppear(50000);
b.waitForElementToAppear(50000);
c.waitForElementToAppear(50000);

Теперь я добавил функцию, чтобы я мог легко изменить 50000 без необходимости вручную редактировать каждую из них:

function waitForElement(element) {
    element.waitForElementToAppear(5000);
}

и изменил приведенный выше код на:

waitForElement(a);
waitForElement(b);
waitForElement(c);

Это анти-шаблон для создания новой функции для вызова относительно небольшой задачи? Есть ли лучший подход?

1 Ответ

6 голосов
/ 15 апреля 2020

Это анти-шаблон для создания новой функции для вызова относительно небольшой задачи?

Нет, это абсолютно нормально! Хотя вы правы в том, что ваша функция настолько мала, что она едва ли что-то выигрывает.

Есть ли лучший подход?

Для достижения цели - легко изменить общий ресурс. В качестве значения аргумента вы можете альтернативно (не обязательно «лучше») также поместить его в переменную:

const time = 50000;
a.waitForElementToAppear(time);
b.waitForElementToAppear(time);
c.waitForElementToAppear(time);

И последнее, но не менее важное: этот код все еще немного повторяется. Другим вариантом может быть al oop (хотя эти три элемента являются примерно пороговым значением для того, чтобы al oop был разумным):

for (const element of [a, b, c]) {
    element.waitForElementToAppear(5000);
}
...