andretshurotshka?❄️кде
05.11.2017
23:42:51
Sergey
05.11.2017
23:45:42
andretshurotshka?❄️кде
05.11.2017
23:47:58
Sergey
05.11.2017
23:50:43
Google
Sergey
05.11.2017
23:50:48
почитай если хочешь)
andretshurotshka?❄️кде
05.11.2017
23:51:42
океей
kana
06.11.2017
00:03:04
Я ооп целенаправленно не изучал, фоново, есть ли какие-то ошибки в рассуждениях и выводах?
Вообще такая тема
Недавно я посмотрел джавовский код
И увидел, что там нет жесткой практики писать this.
И в общем пришла ко мне мысль, что люди там пишут так, будто класс - это просто какая-то отдельная подпрограмма с функциями
То есть как раньше тупо объявляли глобальные переменные и функции для работы с ними, то так они пишут и сейчас, только глобальные - свойства классов, а так все один в один
Особенно это видно, когда нет this
То есть ооп в джаве - тупо способ масштабировать тот говнокод с глобальными переменными
Так в хаскелле как будто нельзя натыкать IORef'ов везде
Ну так и тыкают)
(
Google
kana
06.11.2017
00:03:09
Но с большой неохотой
Потом ещё в ридер кидают
Поэтому тру-ооп и то, что в джавах практикуют - абсолютно разные вещи
И когда массы говорят, что они за ооп, они говорят не про тру-ооп, а про говнокод
А так, SOLID это имхо реально крутая тема
осталось смержить чаты
А всякие паттерны дизайна - это от дъявола
Я после этого видоса сильно угорел по солиду
https://vk.com/wall-135720595_408
Этот мужик еще вот это написал в моем посте, что мол дизайн паттерны нужно заменить на абстракции из теорката
Так это же очевидно
Это первая мысль которая пришла мне в голову при перечитывании книжки про паттерны для джавы (осталась с давних времён?)
То что шаблоны описанные там перекладываются один к одному, авторы ещё так мол по секрету добавляют, что самая мощь — в их композиции
(а мужики то и не знали)
Ладно, пофиг про рекламу своей группы, которую я уже почти забросил из-за лива с вк, еслм я скину видос напрямую, его больше людей посмотрят
https://youtu.be/CmCEdVrZQAE
Aleh
06.11.2017
00:06:38
видос норм да
Pavel
06.11.2017
06:39:38
Антон
06.11.2017
06:58:21
Ещё бы что нибудь посмотреть про ioc di и dip
da horsie
06.11.2017
07:05:38
Google
Pavel
06.11.2017
10:09:58
Вопрос:
Есть метод у класса. Этот метод является запросом т.е. функция. Считается верным что данный метод должен только возвращать данные не изменяя состояния класса (инвариант реализации). Почему тогда все базовые структуры типа стек и прочие контейнеры имеют метод возвращающий элемент и при этом удаляя его в контейнере т.е. меняя состояние ?
Aleh
06.11.2017
10:12:00
Bohdan
06.11.2017
10:12:11
потому, что они создавались без учета cqs
опередил)
Adel
06.11.2017
10:13:27
> Все эти шины - это реализация CQRS.
Поправка, это один из вариантов реализации CQRS.
> Сторонники CQRS утверждают, что команды не должны ничего возвращать.
Это скорее про CQS, где все операции записи (методы) по хорошему должны быть void, но есть скажем pop у стэка. Он одновременно пишет и возвращает. Если тебе надо атомарно что-то такое сделать у тебя будут проблемы.
В CQRS команды не должны отвечать за "запросы". То есть это нормально когда команда возвращает скажем идентификатор созданной сущности, но не нормально когда команда возвращает результат какой-то выборки из базы.
codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/ - вот например мнение Грэга Янга на этот счет (а он типа главный апологет CQRS/ES).
> Приведи простенький пример, если не сложно.
любой кейс когда идентификатор извне команды нельзя получить, потому что формирование этого идентификатора требует какиз-то бизнес штук до которых ты не можешь добраться из-за шины.
Pavel
06.11.2017
10:18:22
Но я говорю про запрос, а не команду. Ну ок. Я представил себе аппарат с кока колой, я нажал кнопку и получил колу. Я сделал запрос и состояние аппарата изменилось. Может быть это нормально? Может так и должно быть?
Adel
06.11.2017
10:19:03
нет. ты сделал запрос на панели. и дал туда монетку
это команда
а потом сделал запрос в лотке. и там получил бутылку
Pavel
06.11.2017
10:34:50
Тогда ещё вариант: ввел сумму в банкомате и нажал кнопку выдать. Запрос? Деньги автоматом выдаст и счёт изменит. Или я не так вижу, поправьте.
Adel
06.11.2017
10:36:55
он сделает все операции. за транзакцию. изменит счет. положит деньги в лоток. Оно не возвращает деньги. Оно просто кладет в лоток. все одной командой.
из лотка может взять кто угодно :)
по большому счету
Mykola
06.11.2017
10:55:11
ребят, а вы видео смотрели, которое pinned message?
чувак умными словами вводит студентов в заблуждение, имхо)
Adel
06.11.2017
10:58:44
я гляну попозже
Aleh
06.11.2017
11:00:36
Я смотрел этот, правда пару месяцев назад
Mykola
06.11.2017
11:02:25
я досмотрю и сформулирую
f4rt~
06.11.2017
11:04:06
Google
kana
06.11.2017
11:36:08
Что я сам считаю про этот видос: так писать стоит, но не всегда. То есть во многих случаях реально заменить ифы на диспатчинг лучше (популярный пример реализации Maybe/Optional через два класса вместо одного с ифами внутри каждого метода).
Вводит в заблуждение он потому имхо, что говорит, что писать нужно только так.
Mykola
06.11.2017
11:44:11
хух, досмотрел....
однажды мне один знакомый академик сказал, что суть вот этого всего - сохранение инвестиций
т.е. рассматривать расширяемость и ре-использование стоит только с одной стороны - как можно меньше потерять при разработке и модификации софта
но это палка о двух концах: предвидеть все случаи расширения невозможно, разработка универсальной программы требует бесконечных инвестиций
f4rt~
06.11.2017
11:45:25
Mykola
06.11.2017
11:45:50
f4rt~
06.11.2017
11:46:08
а солид никогда не дает перспектив тут и сразу, а только в долгосрочной перспективе
Mykola
06.11.2017
11:47:23
тут надо вспомнить hello-world в пару тыщ строк чтоб показать эффективность солида в долгосрочной перспективе ;)
f4rt~
06.11.2017
11:48:37
на то и дана золотая середина
Mykola
06.11.2017
11:49:09
соблюсти балланс
кто там одмин? забаньте плиз
f4rt~
06.11.2017
11:50:42
Mykola
06.11.2017
11:52:22
т.е. математика математикой, но она должна быть применима к реальным задачам. А это вопрос целой отдельной дискуссии
Maksim
06.11.2017
11:52:32
каждый день любая тема о великом сводится к одному: рентабельности всего этого. И каждый день всё равно все рассуждают за идеальный мир, но вот глупый вопрос: а кто всё это использует в реальности?)
Mykola
06.11.2017
11:53:08
ну используют
каждый программист в той или иной мере
Maksim
06.11.2017
11:53:39
т.е. никто)
Mykola
06.11.2017
11:53:50
почему никто?
все используют
Google
Mykola
06.11.2017
11:54:21
но не в полной мере
потому что Гёдель не велел)
Maksim
06.11.2017
11:55:06
не надо подменять понятия)
рест апи тоже все используют) толку с этого не много
Mykola
06.11.2017
11:57:05
что значит "толку не много"? как раз толку с простых тупых вещей сколько угодно много
они работают, приносят деньги, а если их не трогать - то вообще нет никаких проблем
доказано деньгами, а не этой вашей математикой)
Maksim
06.11.2017
11:58:22
программы, которые работаю и приносят деньги, как раз чаще всего написано без оглядок на всякие солиды, мвц, опп, ресты и т.д. (нужное подставить) :)
Mykola
06.11.2017
11:59:01
в том то и речь.... и в этом первая причина, почему тот товарищ вводит людей в заблуждение
f4rt~
06.11.2017
11:59:10
сложно различать кто с кем общается, зрение аж проседает
Mykola
06.11.2017
11:59:23
вторая причина - более глубокая и более мерзкая
изменение предметной области часто ломает солид само по себе
и код можно выбрасывать
пример: есть пол, мужской и женский
и тут суд автралии постановляет: пол - не корректное понятие, его вообще нельзя употреблять, выпиливайте
досвидания мой любимый код
еще есть несколько причин... из них:
- читаемость кода в солиде часто страдает сильнее, чем у простого говнокода
- лютая сложность проектирования "чтоб сразу по солиду"
- фон-неймановская модель и ограничения современных компютеров нарушают солид
- практически все языки программирования нарушают солид сами по себе