Задать вопрос
@jeruthadam
Я крут

Какие преимущества использования классов вместо функции?

Например в данном случае, зачем класс? В чем отличие и преимущества делать так, а не обычной функцией?

5d17f527b8975564958095.png
  • Вопрос задан
  • 836 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Ну, в данном случае, есть возможность создавать экземпляры класса с заранее заданным query. Тоже самое конечно можно сделать и через замыкание. Для такого функционала нет необходимости создавать класс, гораздо проще использовать функцию, а query передавать во время вызова функции.
Но когда в вашем классе появится дополнительный функционал, например пагинация, то тут уже будет проще использовать класс, т.к. он проще расширяем. Но если реализовывать пагинацию внутри класса Search, то это уже нарушает принцип единственной ответственности, и я бы вынес функционал пагинации в отдельный класс.
Но если как раз рассматривать саму пагинацию, то там удобнее использовать классы, вот примерно такую структуру я бы создал
(пример на TypeScript)
class Pagination {
    private currentPage: number;
    private countPages: number;
    public goToPage(page: number): void;
    public goToNext(): void;
    public goToPrev(): void;
    // ну, можно всякие геттеры для приватных полей.
}

Можно конечно легко обойтись и функциями, храня поля в замыкании, но тут чисто на любителя, кому-то больше нравится ООП подход, кому-то больше функциональный.
Ответ написан
rockon404
@rockon404
Frontend Developer
На скриншоте пример неправильно спроектированного и переусложненного без необходимости кода.

1. В ООП в данном примере нет особого смысла.
2. query правильней предавать параметром в вызов метода getResults.
3. key, proxy и base url в методе getResults не место. Перечисленные значения, скорей всего будут использованы в других местах. Ключи вообще отдельная тема, обычно они выносятся в env конфиги и не хранятся в репозитории.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы