Size: a a a

var chat = new Chat();

2020 April 12

DB

Dmytro Bardai in var chat = new Chat();
Gopneg
а для разной реализации есть виртуальные методы, опана
О... Не может быть. Ну давай попробуем. Всё-таки создаём базовый класс? Или несколько интерфейсов?
источник

G

Gopneg in var chat = new Chat();
думай федя, ты же решил доказать что ооп не нужно %)
источник

DB

Dmytro Bardai in var chat = new Chat();
Gopneg
думай федя, ты же решил доказать что ооп не нужно %)
Не приписывай мне то, что я не говорил. Я предложил рассмотреть на конкретных примерах, как может выглядеть реализация задачи, когда класс с данными содержит и логику работы с ними.
Есть что сказать по существу?
источник

G

Gopneg in var chat = new Chat();
есть, пока что ты забыл про две основных парадигмы ооп и сделал вывод что ооп не катит
источник

G

Gopneg in var chat = new Chat();
ладно, про обосрался не буду писать, хотя очень хотелось
источник

DB

Dmytro Bardai in var chat = new Chat();
Gopneg
ладно, про обосрался не буду писать, хотя очень хотелось
Не стесняйся, пиши, мне интересно
источник

G

Gopneg in var chat = new Chat();
да я все написал уже чо хотел
источник

DB

Dmytro Bardai in var chat = new Chat();
Что, как не аргументированная критика, помогает нам стать лучше?
источник

DB

Dmytro Bardai in var chat = new Chat();
Gopneg
да я все написал уже чо хотел
Ясно-понятно. Будут предметные замечания - приходите
источник

G

Gopneg in var chat = new Chat();
так ты еще на старые не ответил
источник

DB

Dmytro Bardai in var chat = new Chat();
Gopneg
так ты еще на старые не ответил
Вопрос про виртуальные всё ещё открыт. Базовый класс или интерфейсы? Вместо ответа - съезд на парадигмы ООП. Ты так и продолжишь беспредметно отвечать?
источник

G

Gopneg in var chat = new Chat();
так вроде ты же доказываешь что-то, почему отвечать должен я?
источник

G

Gopneg in var chat = new Chat();
докажи что любой ответ только усугубляет ооп и надо его выкинуть
источник

AK

Alex Kiev in var chat = new Chat();
Gopneg
докажи что любой ответ только усугубляет ооп и надо его выкинуть
так не делается в приличном обществе )
источник

G

Gopneg in var chat = new Chat();
в приличном обществе жентельмены верят на слово
источник

DB

Dmytro Bardai in var chat = new Chat();
Засчитан
источник

AK

Alex Kiev in var chat = new Chat();
Gopneg
в приличном обществе жентельмены верят на слово
это уже в культурном )
источник

VL

Vova Lantsov in var chat = new Chat();
Dmytro Bardai
Супер полезно... А можно теперь предметно? Что из перечисленного выше имеет право на жизнь? А где dto+service - рулят?
https://m.habr.com/ru/post/201874/comments/ читаем это, затем комменты, и делаем выводы) всё равно с аргументами здесь никто никого не переубедит сегодня
источник

YN

Yurii Nskyi in var chat = new Chat();
Dmytro Bardai
Ну вот отличный вопрос на порассуждать в воскресенье. На примере, например.
Вот у меня есть пользователь. И мне нужно его аутентифицировать.
Как оно сейчас? Сервис аутентификации, метод LogOn(login, password), возвращает экземпляр User. User - простейшее DTO. Ну там, FirstName, LastName, Login, Email и т.д.
Если мы объединяем логику работы с данными и сами данные, то тогда как?
В конструкторе? Типа: new User(login, password) и лезем в базу? Да не, нельзя. У нас же везде async / await.
Тогда
var user = new User();
await user.LogOn(login, password);
-> user.Email => "user@domain.com"

var user2 = new User();
-> user.Email => throw new EntityStateException("Entity is not initialized")
Так получается?
Погнали:
1. За аутентификацию у тебя отвечает специальный сервис, который принимает на вход пользователя, тут идём вровень, НО этот сервис принимает не какую-то там ДТО пользователя, а твоего доменного, который уже сугубо правильный с точки соблюдения всех валидаций! ДТО тебе не могут гарантировать инкапсуляцию. await user.LogOn(login, password); -> бред, у тебя пользователи сами себя логинят? это же не так, даже по элементарной логике
источник

N

Name => "Kyryll"; in var chat = new Chat();
Gopneg
ну вот как минимум во все классы ничо инжектить не надо, инжектить это уже не про ооп, а про процедурные залупы
Просто в ASP.NET Core DI из коробки, а Gopneg не любит все что с Core связано => ерго инжектить не надо, надо в констуркторе зависимости создавать. Yay!
источник