Задать вопрос
  • С чего начать разработку своего приложения?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. Представь, что заходишь на свой сайт:
    - Что ты видишь?
    - На какие кнопки нажимаешь, чтобы что-то сделать?
    и т.д.
    Это интерфейс.
    2. Ты нажал на кнопку на сайте:
    - Куда идет запрос?
    - Какой обработчик/контроллер/эндпоинт?
    Это общая архитектура приложения
    3. Запрос пришел:
    - Какой контроллер должен обработать?
    - Какие интерфейсы исполняют эту бизнес логику (можно выделить несколько интерфейсов для разных юз. кейсов)?
    - Какой ответ должен получить клиент?
    Это уже уровень кода

    На уровне кода работаешь с модельками. Тут предлагаю TDD:
    - Определи методы/интерфейсы на разные юз. кейсы
    - Напиши тесты на каждый юз. кейс
    - Напиши реализацию
    - Вставь готовый код в контроллер

    В общих чертах, можно таким путем идти
    Ответ написан
    1 комментарий
  • Правильно ли я реализую абстрактный класс?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    На мой взгляд
    базовый функционал
    надо заменить на
    общий функционал
    и
    определенная часть функционала
    на
    конкретная реализация функционала
    , т.к. здесь скорее всего пример Шаблонного метода.
    В общем случае, догадка верна - абстрактный класс может использоваться в качестве базовой реализации на основании которой создаются другие классы
    Ответ написан
    Комментировать
  • Найти учеников с максимальной и минимальной средней оценкой?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    function getNoteMinMax() {
        let min = null, max = null;
        for (const item of students.map(s => ({
            student: s,
            average: (s.marks.reduce((a, b) => a + b, 0) / s.marks.length)
        })) {
            if (min === null || item.average < min.average) {
                min = item;
            }
            if (max === null || item.average > max.average) {
                max = item;
            }
        } 
        return {
            min: min.student,
            max: max.student
        }
    }
    Ответ написан
    Комментировать