long люблю долбить по клавишам
Контакты

Наибольший вклад в теги

Все теги (11)

Лучшие ответы пользователя

Все ответы (10)
  • Как лучше CSS vs JS?

    ksenofobius
    @ksenofobius
    Люблю долбить по клавишам
    Все решения, в большинстве случаев, предпочтительнее выполнять в таком порядке: html>css>js
    Ответ написан
  • Я не до конца понимаю ООП, что мне надо знать?

    ksenofobius
    @ksenofobius
    Люблю долбить по клавишам
    Если в кратце, ООП сделает ваш код значительно более читабельным и расширяемым. Код написанный на ФП сложнее поддерживать. ООП позволяет работать с абстракциями, вам не нужно знать детали вызывай тот или иной метод.
    Например в вашем случае есть юзер с ФИО, адрес к аватарке, почта. Например в лк вам нужно вывести Фамилия И.О инициалами. Работает с классом вы можете реализовать метод getShortName который возвращает к примеру 'Петров П.И.', и этот метод относится только к сущности пользователя. Все это позволяет инкапуслировать логику внутри класса, в коде вам не нужно каждый раз вызывать функцию типа getShortNameFrom(user) или еще хуже getShortName(firstName, lastName, patronymic). Инкапсуляция позволяет вам избавить других программистов (и вас в будущем) от желания напрямую вытащить приватные атрибуты.

    Другой юзкейс это полиморфизм. Представьте что у вас есть класс Sqr, Rect, Triangle. Для того чтобы посчитать площадь вы можете просто вызвать методы sqr.calcaulateArea(), rect,calculateArea(), triangle.calculateArea(). Без ооп это выглядело бы так
    calculateArea(w, h) // квадрат
    calculateArea(r) //круг
    И это в случае если у вас есть возможность перегрузки функций, если ее нет (как например в го) вам нужно называть каждую функцию так:
    calculateRectArea(w, h) // квадрат
    calculateSqrArea(r) //круг

    Очевидно что для использования этого кода программисту нужно запомнить куда больше.
    Таким образом мы подходим к мысли что ООП упрощает написание кода (на самом деле нет, но вам пока рано об этом задумываться, эта проблема будет только в очень больших проектах)

    Ну и последнее это наследование. Опять по примеру вашего случая, есть у вас пользователь, и он не может ничего редактировать (у него нет прав). Однако у вас есть ряд модераторов которые могут править данные в личном кабинете (и этот администратор также обладает полем ФИО, аватар и т.д, за тем исключением что вам нужно как-то добавить саму возможность редактирования)
    В этом случае вы можете унаследовать класс модератор от обычного пользователя, таким образом он будет обладать всеми стандартными полями (и вам не придется писать их 2 раз => кода будет меньше) и правами на редактирование.
    (псевдокод)
    class User
        private firstName: string;
        private lastName: string;
        private patronymic: string;
        private avatarPath: string;
        private email: string;
    
    class Moderator(User)
        private moderatedSections: []string
    Ответ написан

Лучшие вопросы пользователя

Все вопросы (30)