https://www.youtube.com/watch?v=6JxGYicUuzg
Вместо кейса засунул куски кода в мапу - ну ебанутый. Особенно я расплескал всю подливу с главного аргумента о том что иначе метод получается длинноват и его сложно поддерживать. Страшные-ужасные методы в тысячи строк, но если ту же тысячу строк размазать тонюсеньким притонюсеньким слоем по сотне классов (каждый конечно же в своем файле) вот тогда да - заебись, хорошо зделали.
Тем более что смысл то всех паттернов как правило чтобы динамическую дрисню ("положим в мапу и будем дергать через строчечки") реифицировать т.е. выписать явно какие у нас классы-методы, чтобы компилятор нам бы помогал.
https://www.youtube.com/watch?v=3m9YQIBMoYg
Вот тут момент с мапой мне показался довольно любопытным. Не буду утверждать что это в принципе не верно, но - автар же говорит о том что специально использует LinkedHashMap
потому что он сохраняет порядок добавленных элементов. Но при этом присваивает его переменной с типом Map который по видимому таких гарантий не дает. Т.е. теперь нам нужно знать динамический тип объекта чтобы получить неоходимые инварианты. Ну и нахуя спрашивается?
Тут конечно же ебанутые скажут ну как же инкапсуляция. Швятой дух инкапсуляции, я молюсь ему три раза в день и ты то же молись. Но короче у меня есть сомнения.
Вроде в джава добавили же человеческие методы вроде File.ReadAllLines в шарпе, чтоб как белые
люди работать с файлами. Все бы ничего, но просто особенно лально что он тут же говорит что
призывает работать с новыми фишками языка и пишет такую вот хуйню. Правда я пытался нагуглить
как там по человечески прочитать файл в жабе но выдается одна отборная индусня с ехал буфер через ридер.
Что блядь тестируют эти "тесты" что системные команды могут прочитать файл? что встроенные коллекции то оказывается работают не ебланят можно элемент добавить и даже удалить? Пиздарики короче.
https://www.youtube.com/watch?v=0xYo3AKpCvw
Что это за over-engenered хуета? Неужели в хибернейте нет роллбека транзакции из коробки.
Ладно тут могу допустить что не уловил мысль автара, но прям чую что какая то хуита полная.
https://www.youtube.com/watch?v=QPh6VxtlUH4
Нахуй тут вообще tail он что ебобо. А впрочем ну да.
Заранее я предвижу возможные возражения что мол это же учебный проект, а вот в боевом там вот огого, там все нормально. Но только это нихуя так не работает.
Как теперь входить в айти то епта. Когда я представлю как двадцатилетний синиор будет мне рассказывать о том что SOLID это вообще самое лучше что только может быть в мире Ну я конечно же буду ему поддакивать
- Да да Арсентий Петрович конечно SOLID самый лучший
- конечно же я напишу еще один "тест" assert 1+1==2 а то ведь вдруг завтра ткань мироздания разверзнется и 1+1 уже не будет равно 2 а будет равно 3 ну как говориться береженого бог бережет
Но есть же предел человеческому терпению и однажды ведь я не выдержу и заржу ему прямо в лицо.
>>1484717
По делу то есть хоть что вскукарекнуть или как обычно?
Так что получается от того что у меня меньше лычек я должен молча обмазываться поносом вместе со всеми?
Пока диды молятся на швятую троицу из наследования-инкапсуляции-полиморфизма приходит новичок и изобретает React например. Вроде и все понимают что удобный инструмент а у дидов все разрывает пукан
- как же так мы кладем разметку, код и стили вместе, как же единственная ответственность? Нет поду как лучше помолюсь швитым принципам ООП на всякий случай.
Вообще всегда потешно видеть как разрывают устои дидов. Вот еще пример - методы в интерфейсах. НО КАК ЖЕ вскрикивают диды НАСЛЕДОВАНИЕ ИНКАПСУЛЯЦИЯ ПОЛИМОРФИЗМ! НАСЛЕДОВАНИЕ ИНКАПСУЛЯЦИЯ ПОЛИМОРФИЗМ! НАСЛЕДОВАНИЕ ИНКАПСУЛЯЦИЯ ПОЛИМОРФИЗМ! ОТСТУПНИКИ! НАСЛЕДОВАНИЕ ИНКАПСУЛЯЦИЯ ПОЛИМОРФИЗМ!
Особенно потешно что подавляющее число таких "дидов" это двадцатилетние синьеры осилившие то самое ооп и еще какой нибудь говно-солид не давнее чем с полгода назад.
> Ну охуеть один только одинокий петух отписался.
Ну так ты высрал огромную и непонятную простыню, что аж лень вникать всем.
Что тебе не нравится: Что существуют говнокурсы? Да, существуют, прими этот факт и иди дальше. И не похож ты на вкатывальщика, так что непонятно, почему ты не можешь решить свои вопросы сам.
>Что тебе не нравится: Что существуют говнокурсы? Да, существуют, прими этот факт и иди дальше.
>>Заранее я предвижу возможные возражения что мол это же учебный проект, а вот в боевом там вот огого, там все нормально. Но только это нихуя так не работает.
Все эти курсы кмк выжимка из индустрии, самый ее сок. Соответственно мне хотелось бы либо чтобы меня ткнули в чем я конкретно не прав, ну или наоборот.
>И не похож ты на вкатывальщика, так что непонятно, почему ты не можешь решить свои вопросы сам.
Ну заебись теперь.
чушь какая-то
в реакте есть и полиморфизм (особенно с ридаксом) и инкапсуляция по компонентам и наследование (самое необязательное, оно есть классическом реакте с классами, там все компоненты унаследованы от класса компонент)
просто джаваскрипт не джава и там все это выглядит немного по другому и с большим привкусом функциональщины
то что разметка код и стили вместе - это не уникально для реакта, так раньше сплошь и рядом писали, вон даже калькуяторошизик который ненавидит фреймворки так писал свой эмулятор мк-61, к ооп вообще не имеет отношения, это чисто браузерные фишки. вначале предпочитали использовать стайл и скрипт теги в штмл, потом начали активно манипулировать дом деревом и чистым штмл из джаваскрипта, потом сделали фреймворки для обоих подходов
>Ну охуеть один только одинокий петух отписался.
Да хули тебе писать, все так. Не понятно, хули ты столько сил потратил на сраные видео-курсы. Пора бы начать книжки читать, раз такой умный у мамы.
Жаба это вообще беда, корпоративные дебилы имитируют бурную деятельность.
>Поэтому они не понимают очевидных вещей, например, зачем писать тесты или разбивать метод в тысячу строк.
Кажется даже до терминальных дебичей начала доходить золотое правило
- лучше никакой абстракции чем хуевая абстракция
может еще пяток-десяток лет и дойдет что то же применимо и к тестам
>>1485048
Ну если ты дибилки кусок то конечно тебе и видится одна только чушь, а если бы ты попытался хотя бы пару извилин напрячь то может даже понял что то о чем я пишу никак не противоречит тому что ты написал. Для самых тупых - потому что "чушь" как раз описывается с позиции дидов, не моей.
Ну вот один такой например >>1485070
Конечно же почему заебались проанализировать для тебя слишком сложновато и понять почему эти факторы уже не применимы. Такое то программирование на заученных рефлексах. То что все это уже двадцать лет как не применимо - это конечно похуй.
>>1485052
В чем конкретно то не прав? А впрочем наверняка еще одно ебобо не вдупляющее вообще кто о чем.
>>1485054
>Пора бы начать книжки читать
В смысле Святые Писания? Это еще одна презабавная картина мира дидов. Предвижу фееричное разрывание пуканов но по большому счету чтение толмудов ни имеет уже давно никакого смысла и держится как явление исключительно на костности мышления дидов. Из книги как правило можно получить только треть информации потратив в три раза больше времени, да еще она и будет наверняка устаревшей.
>Предвижу фееричное разрывание пуканов но по большому счету чтение толмудов ни имеет уже давно никакого смысла и держится как явление исключительно на костности мышления дидов. Из книги как правило можно получить только треть информации потратив в три раза больше времени, да еще она и будет наверняка устаревшей.
Я читаю примерно в 3 раза быстрее, чем проговаривается информация при 2x скорости на ютубе. А особенно скорость выше, когда ты уже в теме и можешь пропускать целые параграфы. То есть чем больший ты профессионал, тем бесполезнее для тебя видео, потому что там 80% инфы будет нескипаемым говном.
Ну и профессионал скорее напишет статью, потому что это банально быстрее, чем писать сценарий и наговаривать его.
>статью
Но не книгу.
>Я читаю примерно в 3 раза быстрее, чем проговаривается информация при 2x скорости на ютубе.
Ну рад за тебя. Есть только подозрение что пиздишь ты еще быстрее или читаешь какую нибудь нелепую хуиту вроде высеров Боба про солид.
>А особенно скорость выше, когда ты уже в теме и можешь пропускать целые параграфы.
Мне всегда казалась странной такая посылка что
> - ну да конечно же в любой книге овер 9000 хуиты вы просто проскипайте ее глазками и все заебок
Ну как то не получается у меня так. Смириться с тем что вот тут десять страниц автор страдал графоманией и писал хуиту так что их можно смело скипать. С таким подходом мне вообще не хочется браться за чтение.
Внимание вопрос - что мешает тот же подход применить к видео, там как бы тоже прокрутка есть?
По моим наблюдениям скорее в видео дадут краткую выжимку все необходимой информации за пару минут, которая будет в толмуде на 500 страниц разбавлена водицей как следует. (В картине мира дидов похоже все наоборот, на да ладненько)
Алсо очень любопытный на мой взгляд аспект, можно сказать - книга - это рассказ о том что ты делаешь, а видео - демонстрация. Потому обычное явление когда в описание половина критических шагов куда то проебалась нахуй, а с видео такое не пройдет (ну или нужно как минимум для этого постараться).
>Но не книгу.
И книгу тоже.
>Ну рад за тебя. Есть только подозрение что пиздишь ты еще быстрее или читаешь какую нибудь нелепую хуиту вроде высеров Боба про солид.
Верный путь стать шизиком на анонимных бордах - верить в собственную охуенность и никчемность собеседника.
>Ну как то не получается у меня так.
Ну так учись, а не пизди про дидов. Чтение - это навык. Он прокачивается. Если ты не читаешь, ты его не прокачаешь. Все просто.
>Смириться с тем что вот тут десять страниц автор страдал графоманией и писал хуиту так что их можно смело скипать.
При чем тут графомания. Когда ты знаешь много (например, потратил на программирование больше 15000 часов), большая часть инфы, полезной ньюфагам, тебе будет давно известна.
>Внимание вопрос - что мешает тот же подход применить к видео, там как бы тоже прокрутка есть?
При чтении ты видешь поле текста, поиск идет быстрее, кратковременная память не тратится на то, чтобы хранить в голове структуру, поэтому проще видеть, например, пункты и силлогизмы.
>По моим наблюдениям скорее в видео дадут краткую выжимку все необходимой информации за пару минут
Кто даст? Тупой Васян, который прочитал книгу, написанную профессионалом, и пересказал тебе. Это испорченный телефон, и качество этой выжимки ты не знаешь. Профессионал же не будет тебе записывать ебучий скринкаст, не потому что он ДЕД, а потому что написать статью тупо быстрее, чем писать сценарий для скринкаста. Скринкасты без сценариев же полное бесцельное говно.
> Потому обычное явление когда в описание половина критических шагов куда то проебалась нахуй, а с видео такое не пройдет (ну или нужно как минимум для этого постараться).
Ты, похоже, говоришь о туториалах, а это в принципе гадость, разжижающая мозг, в любом формате, что в тексте, что в видео. На туториалах образованным человеком не станешь.
О вот это прямое попадание прямо в солид-дебича, видно как сраку то подразворотило.
Ну типикл аргумент дидов, я их тыкаю в конкретную проблему - диды мне отвечают - ну надо просто учиться. Я объясняю что в 21 веке вся инфа в туториалах и статьях, а в книгах одна только графомания и водичка - диды мне объясняют что надо учиться читать. Я показываю говнотесты assert 1+1==2 и говорю об их полной бессмысленности, отрицательной ценности - диды мне отвечают учись писать тесты. Ну ладно, тогда будем учиться. Смотрим как писать тесты, тааакк..
давайте напишем assert 1+1==2
Финиш нахуй
Вопрос к "профессионалам" - какие охуительные способности мне нужно развить чтобы среди нескольких страниц водички найти одно предложение в котором упоминается критически важное поведение? Вопрос скорее риторический.
>При чтении ты видешь поле текста, поиск идет быстрее, кратковременная память не тратится на то, чтобы хранить в голове структуру, поэтому проще видеть, например, пункты и силлогизмы.
О умных слов то понакидал думаешь никто не увидит что ты обосрался. Как ты логическую структуру то установишь между чем либо не сохраняя это в кратковременную память. Хуйни то не неси.
>написать статью тупо быстрее
>На туториалах образованным человеком не станешь.
Тааак обожжи ебана... Так что тогда остается - толмуды по 1000 страниц никак не подходят - ведь их не напишешь быстро (твоя же логика братишка). Туториалы идут мимо. Хм.. Ну может только научные статьи еще, но это отдельная тема.
даже отбитые тестобляди начинают понемногу прозревать что их кормили дерьмом
https://henrikwarne.com/2019/09/29/when-tdd-is-not-a-good-fit/
Смешно что тестобляди даже термин специальные придумали - spike - значит можно закрыться в комнате и пока никто не видит отложить нелепую tdd поеботину мешающую разработке. А когда дело сделано можно как ни в чем не бывало обмазываться assert 1+1==2.
Поставил я как то говнокурсы для "новичков" фоном, там был такой прикол
вопрос из зала - а нахуя вообще эти сеттеры нужны
ебобо объясняет - ну как же (наследование, инкапсуляция, полиморфизм) ну вот например я могу проверить чтобы значение было не меньше нуля, или залогировать, или вообще достать значение из базы
тот же ебобо через 20 минут - ну только никогда не обращайтесь из геттера к базе, воот был у меня случай ... бился головой, выл как животное, все волосы вырвал нахуй .. короче никогда так не делайте.
>ведь ВДРУГ СЛУЧИТЬСЯ ЧТО
Ведь тогда же вообще ебать пиздец нужно будет ПЕРЕКОМПИЛИРОВАТЬ да. И если попробовать копать паттерны то во многом они в это как раз упираются. У дидов старой закалки случилась анальная травма небывалых масштабов с проектов компилирующихся часами и они на этом фоне напридумывали неведомых трюкачеств. Например буду я хранить конфигурацию в разухабистом xml'е и похуй что разобраться в нем вообще невозможно и в коде все это было бы в сто раз проще - главное же можно все гибко настраивать и даже без - тут будет страшно - пере-ком-пи-ля-ции.
Тут я должен отдать дидам должное - проекты компилирующиеся часами это не что то из разряда неведомых страшилок, а вполне с таким можно столкнуться (если работать с криворукими ебобо). Но плясать от этого всю архитектуру, ну хуй знает. Я бы время компиляции все таки в конец списка скорее внес; а если что решал бы его какой нибудь многопоточной еба билд фермой.
>О вот это прямое попадание прямо в солид-дебича, видно как сраку то подразворотило.
Хочешь оказаться мгновенным шизиком в глазах собеседника - сделай какое-то необоснованное предположение о его личности с видом О БЛЯДЬ ПОПАЛСЯ. Какой нахуй солид, что ты несешь вообще, поехавший. Я хуесосил ООП в кодаче 10 лет назад, и я даже боюсь предположить, что ты делал в это время.
>Ну типикл аргумент дидов, я их тыкаю в конкретную проблему - диды мне отвечают - ну надо просто учиться.
С хуя ли - просто? Если у тебя дислексия и трудности с чтением, тебе это будет сложно. Но и программистом ты хорошим не станешь.
>Я показываю говнотесты assert 1+1==2 и говорю об их полной бессмысленности, отрицательной ценности - диды мне отвечают учись писать тесты.
Например, у тебя большие проблемы с контекстом. Мой первый пост тебе итт - >>1485054 (что понятно из поста), и дальше я НИ РАЗУ не написал о полезности таких ассертов. Но ты, будучи дислексичной манькой, не понимаешь этого и общаешься со мной, как с каким-то абстрактным анонимусом.
>Вопрос к "профессионалам" - какие охуительные способности мне нужно развить чтобы среди нескольких страниц водички найти одно предложение в котором упоминается критически важное поведение?
Ты ньюфаг и у тебя водички в книжках не будет. То, что ты считаешь водичкой, является просто неумением вычленить мыслительный процесс человека, которого ты читаешь.
>О умных слов то понакидал думаешь никто не увидит что ты обосрался. Как ты логическую структуру то установишь между чем либо не сохраняя это в кратковременную память. Хуйни то не неси.
Визуально.
>Тааак обожжи ебана... Так что тогда остается - толмуды по 1000 страниц никак не подходят - ведь их не напишешь быстро (твоя же логика братишка)
И вот она твоя проблема: ты не можешь в логику других людей. Даже не знаю, стоит ли подобному агрессивному дауну что-то разжевывать. Ты моей экспертизы точно не заслужил, живи со своим Даннингом-Крюгером дальше.
Оба кода — говно. И выглядят как попытки фронтендера перенести архитектуру Redux на Java. Причем не зная ни Redux, ни Java. Что характерно примеры нормального типизированного кода на TypeScript + Redux давно существуют.
>Хочешь оказаться мгновенным шизиком в глазах собеседника
Ты это уже писал ебанашка, ты реально что ли дед со старческим слабоумием который все время бубнит пару фраз по кругу - всем похуй на твои глаза.
>С хуя ли - просто?
Посыл там в другом был, но видимо для тебя сложновато, поэтому ты увидел одно знакомое слово и за него зацепился чтобы высраться еще каким то бредом
>общаешься со мной, как с каким-то абстрактным анонимусом.
Потому что могу, что теперь будешь с этим делать?
>Ты ньюфаг и у тебя
Просто иди нахуй чмо
>Как ты логическую структуру то установишь между чем либо не сохраняя это в кратковременную память. Хуйни то не неси.
>Визуально.
Ой бляя..
>ты не можешь в логику других людей
Только у ебобо у которых ее нет.
>Ты моей экспертизы точно не заслужил, живи со своим Даннингом-Крюгером дальше.
Да все правильно, можешь съебать ко всем хуям. Можешь не отписываться.
Властолюбивые идеалисты придумывают все это говно ради пеара и денег. Если они не будут высерать по новой архитектуре и принципу раз в год, они утратят свое влияние на неокрепшие умы ньюфагов, будут забыты и начнут покрываться плесенью в какой-нибудь шаражке "Рога и копыта", где пишут на джаве.
Пример хорошей архитектуры на Java:
Абстрактный синглтон базы данных.
Синглтон mysql
Фабрика баз данных
Регистри, хранящая фабрику баз данных
Абстрактный строитель вывода
Строитель вывода из SQL
Абстрактный наблюдатель базы
Наблюдатель за mysql
Посредник, принимающий сообщения от наблюдателя
Абстрактная стратегия выбора баз данных
Стратегия выбора Mysql
Абстрактный декоратор стратегии выбора базы данных
Фабрика стратегий выбора баз данных
Посетитель, запускаемый посредником при получении сообщения от наблюдателя
Заместитель, принимающий посетителя и решающий, делегировать ли команду вывода виду
Абстрактный вид
Вид CLI
Абстрактная фабрика видов
Фабрика видов, возвращающая инстансы видов CLI
Прототип CLI-вида, используемый CLI-фабрикой
Абстрактная модель
Абстрактный ORM
ORM для Mysql
Модель, работающая с MySql-ORM сущностями
Абстрактная активная запись
Активная запись для mysql-ORM моделей
Абстрактный синглтон хранения моделей
Синглтон, хранящий активные записи
Абстрактный синглтон хранения видов
Синглтон, хранящий CLI-виды
Абстрактное мементо
Мементо активной записи Mysql-ORM модели
Абстрактная команда
SQL-команда
Таким образом довольно просто мы получаем быстрое и гибкое приложение, пригодное для дальнейшего расширения функционала и рефакторинга.
круто сделал
раздробил логику по максимуму
так и логичнее и понятнее
>Ведь тогда же вообще ебать пиздец нужно будет ПЕРЕКОМПИЛИРОВАТЬ да.
За километр видно хуеплета, который не писал ничего сложнее laba4.
И ему в голову не приходит, что не ему самому придется перекомпилить (хотя, на самом деле, не перекомпилить, а перекодить сперва) свой говнокод, а другим людям, имеющим несчастье работать с его говнокодом, придется страдать из-за того, что тупому уебку было сложно нажать две кнопки, чтобы геттеры и сеттеры сгенерить.
Ну, оооок, расскажи еще про свое видение настоящего программирования. Про билд-фермы, которые тебе снятся во влажных снах, и т. д.
Второй код, очевидно, лучше. За счет очевидной же расширяемости без необходимости корежить именно этот код.
Ты охуенно выглядишь, начав с
>Хочу входить в айти
и тут же рассказав, что все кругом мудаки, один ты умный.
Ну, как охуенно ты выглядишь, как Грета Тунберг примерно.
>За счет очевидной же расширяемости без необходимости корежить именно этот код.
То что его надо будет изменять в другом месте - это уже неподъемная концепция для дибилки.
>>1485814>>1484925
>Ну, как охуенно ты выглядишь, как Грета Тунберг примерно.
Лол дебичи на одной волне
>>1485812
>придется страдать
Ебать какой ужас вообще. Лучше конечно когда такой вот обмудок захуячет в геттер обращение в базу и внезапненько все ляжет без всякой видимой причины вообще в другом месте. Вот это заебись.
Типы созданы в первую очередь для вменяемого описания структур данных приложения. Напоминаю, что структуры данных приложения — это основа его архитектуры. Они служат для возможности легко вносить в приложение изменения, не боясь неожиданных проблем в рантайме. Типизированные структуры данных служат для создания надежных и легко поддерживаемых контрактов в приложении. Они помогают понять возможные состояния приложения сразу глядя на их определение.
Показатель хорошей архитектуры — когда глядя только на имя модуля и его классов/интерфейсов/перечислений (и их аналогов для функциональных языков, вроде классов типов, алгебраических сумм типов) я могу в четко сказать для чего используется модуль и примерно как он устроен. И когда глядя только на имя класса и его методов (или заголовков функций и полей структур) я могу точно сказать, как этот класс работает.
Если для понимания работы программы нужно смотреть тело методов/функций — архитектура говно. Внутрь метода нужно лезть ровно с одной целью — внесение в него изменений. Внутрь класса — с целью внесения в него изменений.
Просто все большинство многие программисты -- анальники, отсюда любовь к строгим типам, конпеляции и хуе вождя в жопе.
https://www.youtube.com/watch?v=0GIcP6xvW5Q
Весеннее обострение у даунов. Наблюдаем, как истеричный ОП трещит по швам, когда его высеры разбирают по частями и разбивают по фактам. Тяжело тебе, наверное, быть такой эмоциональной истеричкой, способной только на краткофременный бурный аффект на анонимной борде и тотально не способной в логику.
>Весеннее обострение у даунов
>Весеннее обострение
>01/10/19
Лалка
>обострение у даунов
>обострение
>у даунов
Каким нужно быть отбитым ебобо чтобы в трех словах два раза на ноль поделить. Нахуй ты взялся отвечать и дальше погружаться в говно, все и так уже поняли что ты недееспособное животное.
А еще это проблема структурирования. А еще проблема правильного переиспользования. А еще проблема поддержания документации в актуальном состоянии. А еще на программах длиннее laba2 встает вопрос рефакторига и гарантий того, что при обновлении устаревшей библиотеки у тебя не упадет программа с undefined is not an object в редко используемом модуле.
>>1486186
Да есть такая тема - флагман ебанашек дядюшка Боб заронил в неокрепшие умы что главное мы просто подберем для всего правильные названия и наш код будет понятным и читаться легко как книга. Только никакие изъебства в наименовании не дадут гарантии есть ли хотя бы сайд-эффекты внутри метода. НИКОГДА из одного только названия нельзя вывести всю инфу о том что внутри. Это чистейшая утопия. Но ебанашки все продолжают срать под себя.
>рефакторинга, который без тестов как раз невозможен
Ну это пиздеж конечно. Так то любому ясно что твои assert 1+1==2 вообще ничего не помогут, только будешь эту нелепую поебень переписывать потому что она все время падает.
>>1486342
>Если ты дебил с методыми по тысячу строк, то так и есть лол
Когда ж до вас дибилок дойдет что рассирая код по сотням однострочных методов и десяткам файлов в делаете его только хуже.
>только будешь эту нелепую поебень переписывать потому что она все время падает.
Это самое первое, о чем говорит любой человек, учащий тестированию. Если твои тесты падают от изменений в структуре кода, то это хуевые тесты. Ты даже азы не осилил, а уже мнение имеешь.
>что рассирая код по сотням однострочных методов и десяткам файлов
А, ясно, ты дурачок.
Когда напишешь что-то сложнее лабы3 поймешь зачем это всё нужно.
Настоящий Шотландец подтянулся, ясненько. Если все говнотесты беспросветная хуета это не значит что методология хуевая, это конечно же значит что ты просто не постиг еще дзена. Знаем, плавали.
Рассмотрим такой мысленный эксперимент. Ты как настоящее ебобо написал однострочных методов и конечно же по юнит "тесту" на каждый как минимум. Твой код увидел кто то не на столько ебнутый и надавал тебе по ебалу. Ты начал осозновать что что то пошло не так и решил объединить половину методов чтобы они стали двухстрочными. Половина твоих тестов теперь сразу идет нахуй потому что тупо не можешь вызвать метод которого блядь больше нет. Вот так "тесты" "необходимы" для рефакторинга (т.е. только для ебанутых)
>А, ясно, ты дурачок.
Хуй соси губой тряси
>Ты как настоящее ебобо написал однострочных методов
Однострочные методы почти всегда приватные, потому что это просто куски логики, вынесенные из основного(публичного) API-метода для лучшей читабельности внутри этого основного метода. Хороший тест симулирует консьюмера данного API и поэтому очевидно дергает только публичные методы, так что все остальное я могу менять как хочу. И эти однострочники не возникают просто так, на начальном этапе вся реализация делается как можно проще, одним куском, а выносится/рефакторится уже потом, если читабельность хромает(а она начинает хромать очень быстро) и/или требуется реюзабельность. И TDD-тесты этому отлично помогают. Какую еще базовую вещь тебе объяснить? Спрашивай, не стесняйся, может через полгода пойдешь джуниором такими темпами.
>>1486677
>>1486722
еще два ебобо высрались
>>1486735
Приятно видеть что есть хоть кто способный не только бзднуть под себя. Ну что ж
>Спрашивай, не стесняйся
1 Покажи реальные премеры не-говнотестов, а еще лучше примеры такого рефакторинга (с сорцами), а еще лучше кулстори когда говнотесты оказались хоть чем либо полезны.
2 Что ты подразумеваешь под читаемостью (примеры) и как твоя однострочная параша петушащая стейт ее улучшает. Ты ведь не тот особый сорт дебича похлебавший понос дяди Боба и выносящий кусок кода только чтобы дать ему название?
>Покажи реальные премеры
Но ведь тебе не нужны примеры, да еще и с сорцами, потому что ты даже не обозначил языки, на которых работал и которые можешь комфортно читать.
>а еще лучше кулстори
https://www.youtube.com/watch?v=EZ05e7EMOLM
Тогда лучшая программа - так, которая не написана. Лучшая парадигма - не писать код. Вот идеальная программа:
Смотрите, какие безграничные возможности у этой программы:
А чтобы ее задеплоить, нужно вообще не делать ничего:
Все парадигмы сосут. Мы, дZенствующие труЪ кодеры, просто воздерживаемся от написания любого кода.
Пук
>>1486946
Звиняй но в этом треде я бы хотел сосредоточиться на хуесосинге ущербных архитектур солид-ебанашек и тесто-дурачков, так что объяснять мимо-дурачку что такой сайд-эффекты мне не по пути.
>>1486969
>>Покажи реальные премеры
>Но ведь тебе не нужны примеры
Пиздос. Полный. Нахуй. Просто маневры топового уровня.
>потому что ты даже не обозначил языки
охуееееть... нда. Да давай хоть на любом, маневренный ты мой.
>TDD, Where Did It All Go Wrong
>It went wrong at the same point as everything else, when the professionals got ahold of it and wrote books on the subject, without ever actually doing it.
Ух бля жиза, а еще когда дебичи радостно наворачивают это говно и кидаются на нормальных людей со свеже заученными мантрами которых даже не понимают
Похоже тесто-дурачки высрали себе новую догму
Тестировать нужно только публичное API
Хотя казалось бы если задуматься хоть на секунду из каких хуев это может взяться
Но хорошо дополняет ряд всякой обоссаного говна вроде
-стопроцентное покрытие
-тесты вперед
-red-green-refactor
-однострочные методы
Особенно потешно что раньше дибилки горели с длинных методов и разбивали их на однострочники чтобы их "тестировать", а теперь вон оно оказывается как. Это уже шиза какая то.
Может тут немного моей вины но мне казалось что под "кулстори про тесты" очевидно подразумевается пример по схеме
- внесли изменение
- тест упал
- если бы не было теста то был бы баг который невозможно отловить
а не дед бздящий на сцене целый час вообще ни о чем
(Мне правда упорно кажется что это малолетний долбоеб с накладной бородой)
Смешно что целых двадцать минут он расписывает про "говнотесты", но Стокгольмский синдром берет свое. Нахуй это чмо тратит мое время?
33:30 Ой бля цитатки из святых писаний.
Где реальные блядь примеры кода? свои швятые писание пусть себе в сраку засунет
43:20 ПИШИТЕ ГОВНОКОД
Смачный высер.
>Может тут немного моей вины но мне казалось что под "кулстори про тесты" очевидно подразумевается пример по схеме
>- внесли изменение
>- тест упал
>- если бы не было теста то был бы баг который невозможно отловить
Да постоянно такое, когда они есть. Вася пофиксил баг, написал тест, проверяющий, что его нет, Петя криво смержил ветки и воспроизвел баг, но тест упал, Петя понял, что смержил криво - и все довольны.
Аналогично с фичей. Вася написал фичу, Петя ее сломал. Нет теста - бида-бида.
А в большом проекте 99% тасков это либо баг, либо фича (1% - это когда один человек долго пишет большой модуль с кучей взаимозависимых фич один).
В динамикодристне так вообще тесты тупо заменяют гарантии системы типов, у тебя программа может упасть в продакшене из-за банальной опечатки в имени метода, а тесты со 100% покрытием защищают хотя бы от этого.
>Похоже тесто-дурачки высрали себе новую догму
Основные идеи ТДД и тестирования в целом не менялись уже лет 30, не знаю, кто там у тебя что высрал, пока высираешь тут только ты какую-то бессвязную хуйню из своего воспаленного мозга и споришь со своей же хуйней. Но что с шизика взять.
Еще и гиту тут приплел. Конкретные-Примеры-Кода давай. Алсо как часто это у вас происходит
>криво смержил
>Вася написал фичу, Петя ее сломал.
Нет не могу себе представить, давай конкретный пример.
Пока что аргументы уровня - вот я попрыгаю жопой по клавиатуре и все тесты у меня сломаются. Полный бред.
>>1487607
>коко
Дед с видео с тобой не согласен. Затейники постоянно высерают что нибудь новенькое.
На скрине все правильно переписано
Тред не читал ОП додик
https://martinfowler.com/bliki/UniformAccessPrinciple.html
Несмотря на то, что это фундаментальная особенность объектно-ориентированного программирования (UniformAccessPrinciple), на удивление мало языков OO действительно следовать за ним. Большинство языков имитации условно, поэтому привычка использовать аксессор, такие как getAge() в Java и C ++ программ.
>я вот всегда говорил и буду говорить, что конкуренции в АйТи нету!!!
К чему это блядь вообще?
>>1490589
Глянул статью, тем более она совсем маленькая (и выбран самый нерелевантный ее кусок, почему то (видимо потому что процитировавший ее чудик вообще не вдупляет что происходит)). Конечно на малолетнего ебобо для которого Фаулер святой спустившийся с небес чтобы рассказать простым смертным какой должна быть архитектура приложений она может произвести какое то впечатление. Если же воспринимать Фаулера как хуеплета на подсосе у ебанашки Боба, распиарившего себя своей неуемной графоманией то она уже не так впечатляет и легко видеть что аргументы его уже были разобраны и обоссаны в этом же треде.
>This gives the person object the flexibility to change between the two easily
Что это вообще значит если подумать? Смотри мою историю про пере-ком-пиля-цию. Выгоды никакой. Взамен же получаем
>One argument against uniform access is that data access is fast while computation can be slow
но на самом деле дело тут совсем не в скорости (кроме случаев когда оно действительно в скорости) а в том что мы заменяем прозрачную value семантику на возможность получить в безобидном сеттере вызовы к базе и прочие жонглирования хуями.
По поводу цитаты так же добавлю что более менее хорошо зделали в шарпе и руби со свойствами и хотя бы не приходится срать вверх ногами. Но основной претензии это не отменяет.
Над Фаулером стебутся только в том плане, что он пишет совсем простые и тривиальные вещи. Но это не твой случай. Ты всерьез с ним споришь, лол, оказывается, инкапсуляция не нужна, давайте торчать стейтом наружу.
Дело не в перекомпиляции. Дело в локальности и тривиальности патчей. Когда у тебя патч меняет 1000 файлов методом поиска-замены - это плохо. Тяжело делать ревью, возрастающие риски ручного разруливания мердж-конфликта, git blame выдает мусор.
Если внешний API не меняется, а функциональность можно поменять локальным патчем в нескольких местах - это хорошо.
У тебя совсем нет опыта разработки, а когда тебе про этот опыт пишут - "Нет не могу себе представить, давай конкретный пример". Хуй соси, ньюфажек. Подрастешь - поймешь.
Ебаный гита-дибил, подвид инструменто-дибила, опять ты свою ебаную гиту притащил. Ты может еще из тех ебнутых что требуют каждую нетривиальную инструкцию писать в отдельной строчке потому что иначе брейкпоинт не поставить. Рассказывай с каких хуев ты там менял 1000 файлов и я объясню тебе почему ты ебанутый. Только ведь наверняка же такого на самом деле не было, правда? Поэтому я и спрашиваю конкретные примеры, потому что на них сразу видно когда человек знает о чем говорит или как в данном случае брызжет непрожеванным говном высосанным из известного ануса. Люди же с реальным опытом (отказа от get/set параши) рассказывают что такие случаи за многолетнюю историю разработки проекта единичные и ни о каких 1000 файлов само собой речи не идет.
>>1491436
Кекнул с одноклеточного дебича.
>Ебаный гита-дибил, подвид инструменто-дибила, опять ты свою ебаную гиту притащил
Это твои проблемы, что у тебя нет опыта командной разработки
>Ты может еще из тех ебнутых что требуют каждую нетривиальную инструкцию писать в отдельной строчке потому что иначе брейкпоинт не поставить.
Я не пользуюсь отладчиком, но отдельные строчки удобны еще и тем, что так диффы смотреть удобнее. Вообще удобнее газетных колонок никто еще ничего не придумал, поэтому любители строк-колбас являются туповатыми аутистами.
>Рассказывай с каких хуев ты там менял 1000 файлов и я объясню тебе почему ты ебанутый.
Когда ты меняешь api, ты меняешь весь код, который пользуется твоим api. Может api вызываться в 1000 мест? Может. Хотя, конечно, это скорее гипербола. Но даже 20 мест - много, когда альтернатива - 0.
> Поэтому я и спрашиваю конкретные примеры, потому что на них сразу видно когда человек знает о чем говорит или как в данном случае брызжет непрожеванным говном высосанным из известного ануса.
Так мне уже видно, что ты разбираешься в двачепуканье про анусы больше, чем в программировании. Зачем метать бисер перед ньюфагом?
>Люди же с реальным опытом (отказа от get/set параши) рассказывают что такие случаи за многолетнюю историю разработки проекта единичные и ни о каких 1000 файлов само собой речи не идет.
Отказываться от свойств можно, например, в пользу иммутабельности, но не в данном случае, когда ты решил, что стабильность api/abi нужна, потому что деды боятся перекомпиляции. Это просто не имеет отношения к реальности, на что я и указал.
https://www.youtube.com/watch?v=z9quxZsLcfo
Риторика тестобляди для впечатлительных дурачков:
Любой кто не занимается ТДД-ебанистикой непрофессионален
(характерно что ебанашка Боб навалял в штаны и решил воздержаться от дебатов)
Риторика тестобляди которую выволокли на свет и прижали к стене:
Ну не прост лично мне так удобно с тестами поймите я вообще парень в себе неуверенный аутист войдите в положение
Так же внезапные откровения тестоблядей:
Некоторые задачи вообще не возможно разрабатывать через ТДД
Риторика тестобляди для впечатлительных дурачков:
ТДД нужно хотя бы для того что оно в порядок архитектуру приводит
Риторика тестоябляди которую выволокли на свет и прижали к стене:
Ну ТДД отдельно архитектура отдельно какую уж архитектуру ты сделаешь зависит только от тебя братиш
ДЧЧ говорит про циркулярность понятия "хорошей архитектуры" ТДД дурачков
ДЧЧ показывает конкретный типичный ТДД-говнокод с бессмысленными слоями абстракций под моки
Пидорва отвечает каким то охуительным выпуком что автомобиль не нужно менять если он тебя не довез куда нужно
>tdd creates evolutionary pressure
= ТДД говно в десять раз сложнее менять чем нормальный код
Ололо в итоге дружно порешили что ТДД наркоманы ебаные -
пидорва видит зелененькие огоньки и получает впрыск допамина и пидорве похуй что написала очередной assert 1+1==2
ТДД - вера нужно просто уверовать
(можно провести любопытные параллели с тем как консолебляди считают себя эффективнее гуиплебса - когда объективные числа измерений показывают обратное - просто из-за того что больше заебываются набирая поэмы команд когда нормальные люди делают то же в несколько кликов)
PS
https://youtu.be/5Va1fslNKEo?t=343
Паттерноблядь проговорилась. Никогда она не была так близка к провалу.
Наткнулся на
https://stackoverflow.com/questions/2712076/how-to-use-an-iterator/2712125
Всегда потешался с того что вроде бы неймеспейсы в плюсы завезли но пользоваться ими плюсовики не умеют. Так и пишут бедненькие std:: через std:: и упорно делают вид что и так норм. Ау нахуя тогда это все вообще если нет разницы с тем чтобы писать std__method_name. Но вроде и грешно потешаться над убогими ведь это не их вина, просто язык так сломан. Но оказывается что есть такая неведомая хуита как ADL и даже когда плюсовики пытаются решить проблему их "решение" оказывается "нерешением". Просто шляпа.
Тут можно провести прямую параллель с жабоскрипто-дебилами. Когда они пытаются решить надуманную "проблему" автоматической вставки семиколонов. И "решают" ее тем что закрывают ими каждую строчку, хотя язык этого совсем не требует. И конечно же это еще одно "нерешение" потому что даже с точки зрения банальное эрудиции просто блядь очевидно что если проблема в том что система автоматически вставляет знаки там где их "не должно быть" то вставка даже тысячи семиколонов подряд там где они "должны быть" ничем не поможет.
Бля ну нахуя в говнокодинге все так сломано и через жопу, да еще полно ебанутых которые считают что все так и должно быть?
Есть у меня одна смела фантазия - в нормальном языке будущего не должно быть и не будет никаких неймспейсов/модулей/импортов/юзингов етц. Естественно то что в современном языке не может быть никаких семиколонов в каждой строке тут надеюсь спорить будет только в конец ебнутый, поэтому об этом и говорить нечего. Импорты это просто нелепо и охуенно неудобно - вот я беру пример и пытаюсь его запустить, но что это... ах да ебаные импорты которые конечно же неявно подразумеваются. Ну и нахуй так жить? Это что то уровня инклудов в сишке. С ними то хоть управились и современные языки такой поебенью не страдают. И вот от них остался такой атавизм. Надеюсь когда нибудь он будет исправлен. Тем более современные языки уже умеют подтягивать нужные и удалять ненужные инклуды - осталось сделать всего один маленький шажок в неизведанное.
В принципе поддвачну. По мне так и страшный-ужасный null pointer reference exception / undefined is not a function и прочие ошибки на миллиард долларов - хуета которую можно отловить за пару мину в дебаггере и все это и выеденного яйца не стоит. Однако это не мешает больным ублюдкам вставлять по проверке на null в каждую функцию. А еще сейчас активно внедряют новую дикую поебень ?! ?. ?= ?? ?!@#$ Так что жить станет еще веселее.
>можно отловить за пару мину в дебаггере
Можно, но в дебагере ловят уже известные баги, то есть сначала ты проебешь миллион долларов, а потом полезешь в дебаггер. И если ты хочешь писать на языке, где нет анальных нулл-чеков на каждый пук, и при этом не бояться подобных ошибок, то единственный оставшийся стул - это тесты, которые местный шизик так сильно не любит. Вот незадача.
Обычно страшно-ужасный null упоминается в контексте что его не возможно поймать в дебаггере и можно только волосы на жопе рвать если ты за раннее не проставил в каждой второй строчке if(hui==null)throw.. По мне так это бред полный, но пруфов у меня нет.
А тесты да - абсолютно бесполезная поебень. Ну кроме пары приемочных на всякий случай. А отловить все null'ы тестами это такая то пушка. Тесто-маньки снова кукарекают из не проходящего делирия.
Тесты не ловят нуллы сами по себе, тесты просто верифицируют, что для ожидаемого сета инпутов, программа дает ожидаемый аутпут. И нулл-чеки, как и любые в принципе проверки типов тут отходят на второй план и становятся неважной деталью, потому что уже подразумевается, что если аутпут верный, то и внутри все сработало без ошибок.
>метод получается длинноват и его сложно поддерживать.
Так и есть, будет жопа гореть когда 3 макаки лезут в один и тот же метод, коммитят, потом приходится мержить один метод.
https://old.reddit.com/r/programming/comments/eaxsta/a_disastrous_it_migration_corrupted_13_billion/
A disastrous IT migration corrupted 1.3 billion customer records. The culprit was insufficient testing.
Классика жанра -
ЛЮБАЯ НЕПОНЯТНАЯ СИТУАЦИЯ
@
СПИЗДАНИ ПРО ЮНИТ ТЕСТЫ
Из интересного - в качестве меры предлагают САЖАТЬ кодерков. Так-то.
>https://old.reddit.com/
Хохол уходи с двача
> жабе
> без пары недель 2020
Пиздец, деда, как там в 2010 ? Жабу уже Котлин заменил, и там таких проблем нет.
>Хочу входить в айти
>Вместо кейса засунул куски кода в мапу - ну ебанутый. Особенно я расплескал всю подливу с главного аргумента о том что иначе метод получается длинноват и его сложно поддерживать. Страшные-ужасные методы в тысячи строк, но если ту же тысячу строк размазать тонюсеньким притонюсеньким слоем по сотне классов (каждый конечно же в своем файле) вот тогда да - заебись, хорошо зделали.
ЛОЛ, ты вкатываться собрался или других учить? Нельзя научить того, кто считает что сам все знает. Ты должен быть пуст, как пустой сосуд. Пока ты таким не будешь, программировать ты никогда не научишься.
Какая часть
>НИКОГДА из одного только названия нельзя вывести всю инфу о том что внутри.
тебе непонятна, пидараска тупорылая?
>>1548187
Какая часть
>Смешно что тестобляди даже термин специальные придумали - spike - значит можно закрыться в комнате и пока никто не видит отложить нелепую tdd поеботину мешающую разработке.
тебе непонятна, пидараска тупорылая?
>>1550151
Ну это уже просто самая тупая пидараска треда, кекнул с него.
>>1550908
Хуй соси, губой тряси
Маня, пока у тебя нулевой опыт, тебе надо покорно завалить ебало и молча слушать что старшие говорят.
>>1568988
Солид + XP это единственный способ писать на ооп параше так, чтоб в конце концов не насосаться хуев. Но твоя «приложуха» конечно же будет не такая, у тебя все будет заебись и так (нет).
Кекнул с Хотца не могущего в мондены.
А вы предлагаете простому Васе с Сабраманьяном лезть в эти говна.
Монады -- это просто.
Тебе всего лишь нужно знать теорию множеств, лямбда-исчисление, теорию типов, теорию категорий, топологию, теорию групп, пучки, кольца и функциональный анализ.
Ладно, шучу, все, что идет после теории категорий, знать не обязательно. Да и теорию категорий на самом деле тоже.
А если серьезно, то не вижу противоречия. Может Хотц байтоеб и ему монады с функторами особо и не нужны, а вот в каких-нибудь Скалах и Котлинах они уже есть, и не факт, что они не появятся в каком-нибудь жс в ближайшее время. Но тут надо понимать, что монады появились как решение проблемы невозможности ввода-вывода в чистом языке, в более традиционных языках вроде лиспа на чистоту забили хуй и побочные эффекты просто пытаются ограничить, а не устранить полностью.
>Кекнул с Хотца не могущего в мондены.
"Ахахаха, вот лошара тупой, даже не знает, что монада - это моноид в категории эндофункторов" подумал Витя-хаскелист, но тут подъехал злобно рычащий автобус и прервал его злорадное торжество. Витя торопливо засунул свой бюджетный смартфон в карман видавшей виды куртки и неуклюжей рысью побежал штурмовать автобус, который почему-то остановился за тридцать шагов до остановки. Сегодня народа было немного и Вите повезло - всю дорогу до своего подмосковного города-спальника он провёл сидя и вскоре скатился в сладкий полусон, в котором он чётким и уверенным голосом доказывал неизвестному собеседнику, что профанам, не знакомым даже с леммой Йонеды, в их благородном ремесле места совершенно очевидно нет.
В Котлинах и нет монад, как и в F#, потому что там нет даже функторов.
Монады не нужны толко ради чистого IO, его можно добиться и другими средствами, например линейными/афинными типами. Монада - это в первую очередь удобный обобщенный концепт, позволяющий делать разные вещи, вроде упомянутого чистого IO, Null-safe обработки данных, предоставления ad-hoc полиморфизма на типах, когда в результате у тебя получаются лаконичные простые функции, работающие с простыми типами, а вся логика распаковки/упаковки контейнерных типов вынесена отдельно. В итоге, имея такие простые функции, ты можешь легко использовать их композицию и прогонять через нее любые, сколько угодно сложные типы данных и все это с гарантированной типобезопасностью.
А для понимания монад в хаскеле вообще никаких специальных знаний не нужно, достаточно школьной алгебры и чтения документации. Обычно это сложно для тех, кто либо вообще ничего не знает про системы типов, либо сильно одеревенел, задрочив онли ООП. В обоих случаях осиливания TaPL’a будет более чем достаточно.
Есть в качестве библиотеки, хотя сам я не пробовал.
https://arrow-kt.io/docs/core/
>>1570832
>А зачем их понимать?
А зачем программировать? Чтобы бабки получать? Так ради бабок есть более прибыльные занятия.
Олимпиады как раз никакого отношения к системам типов не имеют. А рабочие кейсы для опытного разработчика со временем становятся похожи как две капли воды и он ищет удобные инструменты, позволяющие их красиво решать в обобщённом виде, да и вообще позволяющие удобно выражать абстрактные построения. Для этого и нужны такие вещи, как например, системы типов.
В принципе, знание систем типов, - это одна из вещей, отличающая программиста (именно программиста, а не компьютер-саентиста), от специально обученной обезьяны, которая программирование не любит, не понимает и оказалась в нем случайно, потому что плотють.
Психология опытного разработчика устроена иначе. После нескольких лет работы он знает свой инструмент от и до, не находит в нём ничего нового, и все свои задачи он знает от и до. Причем задачи для него становятся похожими друг на друга как две капли воды, ведь процесс познания заключается в изучении множества частных случаев с последующим абстрагированием и выведением общих закономерностей. В конце концов какая разница, нужно ли мне зипануть два списка, собрать результаты работы двух парсеров или посчитать сумму двух сигналов: для опытного разработчика всё это - map apply на аппликативных функторах.
Вот тут и начинается самое интересное: с одной стороны язык для опытного разработчика больше не является предметом фапа и изучения, единственное требование к нему - возможность записать программу в категориях, максимально близким к тем, которыми он мыслит. С другой - мышление опытного разработчика гораздо более абстрактно и высокоуровнево, чем мышление джуниора, следовательно, язык должен иметь средства выражения этих абстракций. В этот момент многие разработчики перерастают свой инструмент. Более удачливые переходят на другой, более развитый. Менее удачливые, у которых нет такой возможности, вообще перестают программировать, аргументируя это тем, что программирование - тупое, однообразное занятие, и становятся аналитиками или архитекторами (т.е. фактически тоже меняют инструмент - убогий негибкий язык программирования на гибкий и удобный документ microsoft word). Восторга джуниоров ни те ни другие как правило не разделяют, просто первые говорят, что LANG_A - убогое говно, а LANG_B - крутой инструмент для опытных программистов, а вторые говорят, что LANG_A - это нормальный инструмент для подчинённых им обезьянок, а применения для LANG_B они не видят, поскольку ни они сами, ни их обезьянки этим инструментом не владеют.
И последний вопрос - что же происходит, если LANG_B попадает в руки джуниора? А ничего не происходит, потому что он просто еще не понимает назначение всех этих абстракций и в лучшем случае программирует на LANG_B как на LANG_A (обычно более мощные языки позволяют писать на них как на менее мощных, обратное неверно). Я сам неоднократно встречал студентов, изучавших lisp и prolog в университете (да, сейчас это норма, в моё время никаких лиспов в росийских университетов не было) и совершенно не понимающих, к чему все эти знания. Какого же было их удивление, когда я показывал им как то, чему их пытались учить, применяется на практике, как это позволяет делать более грамотную декомпозицию программы, писать более сопровождаемый код, где лежат пределы выразительности используемого нами языка и как программу можно было бы записать если бы язык был более выразителен.
но он прав. Полиморфизм нарушает контракт. Map может быть HashMap, может быть LinkedMap, а у них разное поведение. И тебе надо каждый раз искать место создания этой коллекции, чтобы узнать её настоящий тип.
Ещё веселее с коллекциями и вилдкартами, когда в коллекции могут быть объекты с одним интерфейсом, но разной реализацией
Поведение будет то же, потому что поведение определяется публичным интерфейсом.
Отличаться могут детали реализации, но на это сугубо похуй, потому что компоненты системы стыкуются на основе интерфейсов друг друга, а про детали реализации знать ничего не должны. Мне похуй что там за конкретная коллекция вернулась, главное чтобы с ней можно было делать то, что мне нужно, что должно быть ясно просто из ее сигнатуры (публичного интерфейса).
Итак, байтоёбы. Я примерно представляю, от чего они получают удовольствие. Написать работающий сокет, получить прямой доступ к железу - это очень увлекательно. Да, изобретатели велосипедов никому не нужны, но они по-своему счастливы, когда они с красными глазами после бессонной ночи смогли-таки вручную написать программу, передающую запрос серверу на скорости 8 кб/c.
Энтерпрайзо-макаки. Пишут то, что им сказали, работают 8 часов в сутки. Вроде бы и деньги есть, и делают что-то полезное, но писать код по одинаковым шаблонам, используя всё готовое - ужасно скучное занятие. Получать удовольствие, если ты пишешь шаблонный код, невозможно.
Функциональщики. А от чего они получают удовольствие? Что приносит интерес? Поясните.
>Скажите, а как вы получаете удовольствие от программирования?
От программирования - да.
>Допустим
Не допустим. Любые практические задачи (как написание низкоуровневого кода, так и энтерпрайз и гейдев) могут решаться как и императивном говне, так и на функциональных языках. Когда ты пишешь какой-нибудь загрузчик спредшитов для энтерпрайза на джаве - это жопаболь, такое чувство, что в языке всё сделано против тебя, чтобы заставить тебя заниматься хуйнёй, запутывать и размазывать задачу тонким слоем говна по рассыпухе классов. На Хаскеле наоборот всё направлено на удобство. Т.е. решая одну и ту же задачу в одном случае ты страдаешь и проклинаешь жавамакак, в другом случае наоборот думаешь, какие молодцы, охуенно сделали.
Ты ожидаешь получить что-то, элементы чего-то могут быть отсортированы и сортируешь если надо. Потому что сортировать нужно там, где это непосредственно нужно. В теории, на завтипах и на шаблонах (тут могу ошибаться) можно это тайпчекать и, собственно этот код и являлся бы частью публичного интерфейса. Типа получаю что-то, что отсортировано через X, где X - ...
Но вообще выходит что ты изначально ожидаешь получить какие-то детали. Это как если бы пользователь сервиса ожидал, что при успешной регистрации его аккаунт был бы не просто создан, а конкретно сохранен в csv файл в на сервере.
>Но вообще выходит что ты изначально ожидаешь получить какие-то детали
именно. В любом случае от объекта я жду определённое поведение. А благодаря полиморфизму поведение может быть совершенно другое. И тут мне говорят что это хорошо и так и должно быть
Щас бы почитать мнение человека без опыта о том какой он самый пиздец умный.
В тех частях кода, где тебе нужно ты и можешь уточнить до конкретного типа. Полиморфизм этому никак не мешает. Полиморфизм дает возможность не уточнять, но не вынуждает это делать.
Хотя уточнение до конкретного тира ничего тебе не даст для того примера что ты привел.
https://www.youtube.com/watch?v=YR5WdGrpoug
Вот покушать вам принес. Даже не знаю двойственные чувства тут, может вы рассудите. Хека беспросветное уебище несущее полнейшую бессвязную хуиту и это видео не исключение. Ору с тех времен как он высрался своим simple is not easy и его безмозглые подсосы теперь по всему интернету повторяют эту нелепую хуиту, правда обычно сходу не могут определиться что лучше (hint: потому что на самом деле это одно и тоже). Но с другой стороны он посикал на мондены (и немножко на типы) что хорошо. Вот как то так.
https://www.youtube.com/watch?v=aKLntZcp27M
У тянучка, все прям возбудились, а еще rust и в видео сикают на ООП - прямо можно пере-возбудиться. Я так скажу если даже тянучки уже начали сикать на ООП - это значит уже серьезные тектонические сдвиги пошли.
Но на мой вкус выступления хуита какая то. Чем этот паттерн хорош я так и не понял, какое то переусложненное говно на ровном месте. (Ну кроме производительности из за текущего положения дел с железом.) Был поставлен вопрос если монстр нападает на игрока куда должен идти соответствующий код (- в монстра, в игрока, в менеджер-здоровья?). Но отвечен он не был.
> So... how do I implement the "monster damages player" functionality under this architecture? Where does the code live? Is it a method on one of the component traits? What arguments does it get? Does it need a mutable reference to the entire ECS?
И то что код плохой потому что "многовата" - детский сад.
> alright alright, can someone explain to me what's so bad about that C++ player class with all those accessors? yes, it's a lot of accessors...
John Ousterhout: "A Philosophy of Software Design" | Talks at Google
https://www.youtube.com/watch?v=bmSAYlu0NcY
Вообще ни о чем, просто дед бздит в воздух целый час. Но быдлу норм как обычно.
> Nothing here is new or anything more than simple age-old common sense, "measure twice, cut once", be disciplined. "Don't overuse exceptions" wow incredible insight, 40 year's of wisdom..... "hard to know if the course is working" LOL, what a joke, 1000 lemmings thumbs up.
Кекнул с его - тесты очень важны - но у нас в курсе мы их не используем. Типикал тестоблядь - кто громче всех про тесты кукарекает - тот и больше всех их вертел на одном месте.
Paweł Szulc - Maintainable Software Architecture in Haskell (with Polysemy) - Lambda Days 2020
https://www.youtube.com/watch?v=kIwd1D9m1gE
Бегло полистал, вроде там что то про свободные мондены. Есть у меня подозрение что эти свободные мондены в хачкеле это уже лепка "внутренней системы", занятие довольно бессмысленное. Но как бы там ни было не представляю чтобы какой либо человек в здравом уме / рядовой кодер Вася или Сабраманьян в ходе решения своих повседневных задач решил что таааак давайте-ка распишем свободную алгебру, тут у нас функтор... свободные мондены хуе-мое. Никогда такого не будет.
>говнокурсы по жабе
Лучше бы питон взял.
Любой пример большого рефакторинга из его книги где он берет более менее удобоваримый (но немножко непонятный) метод и раздристывает его абсолютно без всякой причины на мелкие кусочки связывая их через дополнительно созданные поля класса (т.е. мутабельный стейт без всякой причины - двойной удар тупости)
Вот мультиплатиновый ролик по сабжу (и не без ебанашки)
https://www.youtube.com/watch?v=IRTfhkiAqPw
Вот еще свеженького говнеца наваляли на клоуна:
https://old.reddit.com/r/programming/comments/hhlvqq/its_probably_time_to_stop_recommending_clean_code/
https://qntm.org/clean
> the provided code is bad
> If this is the quality of code which this programmer produces — at his own leisure, under ideal circumstances, with none of the pressures of real production software development — then why should you pay any attention at all to the rest of his book? Or to his other books?
> бизнес логика в контроллерах
ебать говнище, оба примера