image.png170 Кб, 500x471
C# .net 9 release дотнета тред #59 /csharp/ # OP 3347352 В конец треда | Веб
Предновогодний тред про лучший язык!

Приятного общения ИТТ.
Главные темы - IReadOnlyList, Enum и BackingField

1. Ресурсы:
https://dotnet.microsoft.com/learn
https://ru.stackoverflow.com/a/416585/422180
https://metanit.com
https://professorweb.ru

2. С# для веб
https://docs.microsoft.com/ru-ru/aspnet/core

3. C# для десктопа
https://docs.microsoft.com/ru-ru/dotnet/desktop

4. С# для игр
https://ru.stackoverflow.com/a/609901/422180

5. С# для мобильной разработки
https://docs.microsoft.com/ru-ru/dotnet/maui

6. Годные ютуб-каналы
https://www.youtube.com/c/CODEBLOG
https://www.youtube.com/c/AndreyShyrokoriadov
https://www.youtube.com/c/DevJungles
https://www.youtube.com/user/Shmachilin

Шапка: https://pastebin.com/HT7Hi6FD
Прошлый тред: >>3332445 (OP)
2 3347427
Возникла задача заделать софтину работающую с девайсом по езернет-сети. Никаких ИП, никаких ТЦП, там по верх езернета поднят свой протокол, вот по этому протоколу и нужно общаться. Всё что удалось нагуглить это
https://learn.microsoft.com/ru-ru/dotnet/fundamentals/networking/overview
Но там опять таки тисипи/айпи. А мне, я так понимаю, нужно ловить все входящие езернет-кдры и из них выбирать нужные, и также в эзернет отправлять согласно тому протоколу свои кадры. Повторюсь, никаких тисипи/айпи.
И судя из того что на тему работы напрямую с зернетом на C# ничего негуглится, у меня, как у ньюфажины, складывается впечатление что это и не возможно. Подтвердите что это так или скажите где смотреть.
3 3347595
>>47427
Ты ебанутый?
OSIModelv1.svg.png83 Кб, 440x518
4 3347596
5 3347606
>>47595
Может быть. Сказать что хотел?

>>47596
Вот мне канальный уровень нужен.
6 3347618
>>47606
Тебе нужен С/С++ и уровень ядра. Сишарп - это про асинхронные пуки в кафку.
7 3347637
>>47618
То есть никак? Хорошо. Тогда если на С/С++ скомпилировать библиотеку и потом её подключить к C#, прокатит?
8 3347641
Взял дипломную тему по автоматизированному кросс-бразузерному тестированию сайтов.
Нужна интеграция с CI/CD
Запись видео сценариев

Не знаю, как к нему подступиться. Думаю выбрать Selenium и использовать какую-то программу, например ffmpeg. Но боюсь, что могут возникнуть проблемы с linux и докером.
Можете подсказать, что лучше использовать?
9 3347651
>>47641
Для диплома надо было брать самую простую тему, а не интересную. Потом 20 раз пожалеешь.
10 3347713
>>47651
Если он планирует дальше учиться надо брать какую-то тему для дальнейшего развития в кандидатскую.
11 3347724
>>47713

>Если он планирует дальше учиться надо брать какую-то тему для дальнейшего развития в кандидатскую.


Ну и будет такое же дрочево с дипломом. Плюс к моменту завершения кандидатской тема моржет оказаться уже неактуальной (особенно в айти-то). Для кандидатской нужна тема с реальной работы решающая реальную проблему. Ну или решающая реальную теоретическую проблему, но это тоже не уровень диплома.
12 3347769
>>47724

>ема моржет оказаться уже неактуальной (особенно в айти-то).


Как вы заебали. Ваши фреймворки не имеют блять никакого отношения к Информационым технологиям.
Если твоя кандидатка это не говно из допы её актуальность будет ВЕЧНОЙ. Кнут пишет свой труд уже 60 лет и первый том актуален как никогда. В ИТ за 70 лет ничего особо не изменилось в базовых вещах. Все твои фреймворки и подходы типо ДДД и аджаил созданы 30 лет назад.
13 3347812
>>47651
Так у него браузерный кал, самое дно в программинге.

>>47713
Проиграл, а дохтурскую ты на пехепе собрался защищать?
14 3348240
>>47427
Максимум что можно сделать из шарпа это дергать winapi для такой низкоуровневой работы с сетью но это такой жуткий гемор что лучше сразу плюсы брать, ибо дергание winapi из шарпа - это пиздец. Из вариков только WinDivert смотреть, мб там есть врапперы для шарпа, но наверняка не знаю Если речь идет о Линуксе то вообще пизда, лучше сразу брать scapy из пистона
15 3348245
>>47641
Братан, ты пиздец взял, целый microsoft свой playwright 3 года дрочит чтобы сайты кросс-платформенно тестить а ты решил соло это для диплома сделать? Лучше ебашь CRUD-ы если еще можешь поменять тему или в целях работы заранее уточни что-то чтобы снизить градус амбициозности
16 3348321
>>48245
он может сделать обвязку над playwright
как над тем же селениумом.
никто не ожидает что он свой селениум напишет
а что то типа "я нажал на кнопку оно тестируется, красиво отчеты рисует"
17 3348392
>>48240

>Если речь идет о Линуксе


О винде.

>WinDivert смотреть


Я нуфаг и даже не представляю что это такое.

>дергать winapi для такой низкоуровневой работы с сетью но это такой жуткий гемор что лучше сразу плюсы брать


Поясни кратко в чём там принципиальная разница .
18 3348413
>>47651
>>48245
Ну из выбора у меня была унылая машинка на притоне и друга муть, завязанная на математике и робототехнике. Это самая интересная тема была и близкая ко мне.

У меня вопрос, как все это сделать. Как записывать экран? Я знаю, что в Selenium можно делать скриншоты headless браузера. Думаю, склеить их вместе, например, с помощью ffmpeg. Как это будет работать в github actions, докере и етс? Просто не хочу, чтобы случилось так, чтобы весь труд пошел насмарку, когда выяснится, что это не работает где-то.
19 3348543
>>48413
А нахуя ты это спрашиваешь у продуктовых разработчиков, которые с этой поебенью целыми днями ебутся?

Я вот пришел сюда твою мамку хуесосить и отдыхать душой, а не за студентов дипломы писать.
20 3349004
>>48413
Посмотри сорцы Selenoid, они такое делают. Вроде как стримят видео из браузера подключённого к виртуальному дисплею (или из самого виртуального дисплея я хз) через ffmpeg.
right.jpg283 Кб, 960x1280
21 3349352
Сегодня я понял, что FluentAssertions - полная хуйня, потому что
либо они не срабатывают на вопросительном знаке:

some?.object.Should().Be(false);

либо стреляют с NRE, что не информативно.

И вообще, все эти билдеры и закосы под английский язык нахожу уебанскими.
22 3349366
>>47352 (OP)
ну чисто по приколу, так для себя кидает человек ресурсов, что такого?
программирование 23 3349369
/pr/
Подскажите, только начинаю изучать программирование, думаю связаться и начать "Kotlin", норм варик?

pls pls
24 3349374
>>49369
Ты ошибся.
25 3349378
>>49352

>И вообще, все эти билдеры и закосы под английский язык нахожу уебанскими.


вот вот. программисту проще читать код (банально мозг отформатирован на чтение именно кода), а эта англоязычная херота она для тестеров придумана, а не для нормальных людей
26 3349394
>>49352
Пользуйся Nunit там нормальный синтаксис.
27 3349464
>>49369

Если тебе нужен выразительный язык - смотри в сторону котлина.
Всё остальное есть в c#
28 3349467
>>49394
NUnit мне не нравится. Это комбайн всё-в-одном. А еще в нём нельзя управлять жизненным циклом самого теста/тестового класса/сборки.

В принципе сейчас в этом плане xunit единственный, который по нормальному устроен. Он модульный и состояние по умолчанию не переносит из теста в тест
29 3349502
Есть кто blazor использует? Я заебался с ним только начав знакомиться.
Беда с обновлением компонентов(server):
Есть две ссылки на одну страницу, в ссылке передается Id. Компонент отображает таблицу с данными, отбирая их по Id. Если тыкать по разным ссылкам с другими компонентами, чередуя их - то компонент таблицы обновляется нормально. Но если открывать один компонент таблицы по ссылкам с разными Id, то отображается только таблица, которую открыли первой. Повторное открытие страницы с компонентом с другим Id не обновляет данные. statehaschanged не помогает.
30 3349547
>>49467
Тут еще какой то tunit рождается
изображение.png133 Кб, 1076x560
31 3349934
>>49547

Смотрю я этот TUnit

> Property injection


нахуя?

> Dependency injection support


нахуя?

> Native AOT / Trimmed Single File application support


ну тысячах на ста юнит тестах, вероятно, будет полезно

> Parallel by default, with mechanisms ...


круто, конечно, но это для очень высокоранговых разрабов

> Hooks before and after
годная штука по идее, но, вероятно, если есть необходимость гонять хуки - то тесты спроектированы неправильно

Ну шустрее немного. Но ввиду того, что они поддерживают только восьмой фреймворк - без вариантов, пересаживаться на него не имеет большого смысла
32 3349946
>>49934

> только восьмой фреймворк - без вариантов


плохо быть тобой.

а зачем это всё - узнаем по отзывам когда оно выйдет. без тулинга оно не нужно. Да и релиза первого не было.
33 3350073
>>47427
И какая адресация, чел? Ты понимаешь, что IP - это считай базовая база, поверх которой все остальное работает?
Или у тебя взаимодействие в духе - вот провод подключен я по нему нулики-единицы гоняю?
Если есть адресация - значит будет IP - стек. А значит берешь сокет, ручками собираешь пакет и погнали.
Если ее нет - у тебя будет ком-порт и ты пишешь-читаешь как из файла.

Все. Не тупи.
34 3350081
>>50073

>Ты понимаешь, что IP - это считай базовая база, поверх которой все остальное работает?


Вот так да, даже и такие бывают...
Малыш, ты что-нибудь про МАС-адреса слышал?
35 3350088
>>50081
Ой, ну не начинай.
Я на 146% уверен, что чел просто неправильно понял задачу и потому лезет куда не надо.
Учитывая мой опыт работы с заводами - там Ethernet'ом называют свою библиотеку для работы с тем самым TCP/UDP, дальше оборачивают это в свой HDLC-лайк или Modbus-лайк протокол. Никто там не лезет в залупу. Потому что надо железки продавать, а не изобретать велосипеды. А железки сейчас покупают из принципа - я тут самые дешевые купил, там еще дешевые купил они должны все подружиться, если это не дружится с остальным нормально - идет нахуй.

А когда в нее лезут - зовут тех кто шарит, а не чела, который такие вопросы задает.

Если ему реально надо - пусть берет питон, у питона дохуя пакетов для работы хоть с маком, хоть с хуяком.
36 3350142
>>49946

> плохо быть тобой.



Я свои проекты перевёл на восьмёрку этой осенью, с версии 3.1.
Но мои коллеги буквально клали хуй около 4 лет на обновление. И таких проектов много.

Буквально люди не понимают, что "окончание поддержки" фреймворка - это буквально окончание поддержки в том числе и сообществом.

Знаю проект, который не хотели обновлять с фреймворка 4.5.2 и даже попытались "переписать на микросервисы". Правда, получилась хуйня и они просто понаписали кучу синхронизаторов вокруг старого проекта, и в итоге всё равно пришлось переписывать основной проект на дотнеткор+докер.

А разработчикам tunit ничего не мешает буквально выставить 2 числа в проекте, чтобы подарить возможность его использовать значительному количеству разрабов.

А один факт поддержки только последнего фреймворка как бы намекает на уровень авторов.
37 3350154
>>49547
И как вишенка на торте, разработчик tunit повторил ошибку nunit и вкорячил уродливые nunit-подобные ассёрты непосредственно в запускалку тестов.

Это чтобы разрабы сразу подключили fluent-assertions, передрались и друг за другом начали ассерты переписывать на "правильные".

Я чем больше смотрю на внутреннюю архитектуру xunit - тем больше охуеваю с того, какой он классный. Взять хоть IDisposable
38 3350162
>>49547
И ещё одна вишенка на торте, там утырок не поддерживает не асинхронные тесты.

Там даже ассёрты возвращают таски

[Test]
public async Task MyTest()
{
await Assert.That(1).IsEqualTo(3);
}
39 3350209
>>49394
Да говно там из пальца высосанное, которое только долбоёбам заходит, которые кичатся знанием английского кичатся.

price.Assert()!.Is!.That()?.Equals["to"]?(1);

Я помню, был один еблан, он думал, что код на английском языке пишет. Ему ответили, что он на c# пишет.
40 3350290
>>50142

>А один факт поддержки только последнего фреймворка как бы намекает на уровень авторов.


намекает на желание быть "на острие", а не поддерживать устаревшее говно.
как пользователь софта - я бы осудил, как программист - понимаю, ибо сам такой.
41 3350294
>>50154
хз о чем ты. tunit, похоже, имеет только fluent подобные assert
и обычных не имеет (что лично для меня плохо - я пишу код, а не свитки)
42 3350358
>>50294

Я о том, что nunit включает в себя ассёрты с очень специфичным синтаксисом, и отключить их невозможно.

Большая часть из них объявлены устаревшими и поэтому там постоянно ассерты переписывают

А ещё часто на проекты с нюнит с тестами подклчюают дополнительные тестовые фреймворки и начинается переписывание переписанного
43 3350583
>>50358
Вполне нормальный синтаксис.
44 3350603
>>49369
Норм варик в 2к25 это F#. Попробуй, сразу влюбишься.
45 3350609
>>50603
так то он, как и все, любит ДЕНЕЖКУ
а в твоем фшарпе где денежка то
46 3350610
>>50603
Литерали говно без задач. F# появился 20 лет назад и до сих пор нигде не используется.
47 3350611
>>50610
ну сам язык не говно, а весьма более менее, хотя "они убили немерле, сволочи"
но применить его на фоне существования шарпа мало кому есть куда ибо мало кто понимает зачем оно куда и почему
и проще написать на шарпе, чем изучать новые материи.

таким образом - без задач.
48 3350614
>>50609
Кто деньги ищет, тот всегда найдет. В F# есть ДУША! Душа .NET платформы. На этом языке можно писать большие проекты без ебли с нагромождённостью C#. Ну, а деньги последуют.
49 3350615
>>50611

>немерле


Лол, кто-то еще помнит эту хуйню. На рсдн полтора шиза топили за эту польскую поделку, форсили патерн матчинг как не в себя. В итоге матч добавили в сишарп, оказалось нечитаемым говном, которое никто не использует.
50 3350616
>>50615
лол. сила немерле это макросы. они вон даже в расте есть
в шарпе же "ну поззззяяязяяя ну добавьте это хотя бы через сто тысяч миллионов лет"
51 3350617
>>50616
Макросы не нужны. С ними каждый проект превращается в непонятную хуйню.
52 3350619
>>50617
сделать так и без макросов можно. тот же кодоген хотя бы тоже работает неявно.
так что не нужно искать черную кошку
53 3350620
А есть для шарпа нормальный линтер в виде расширения для VS Code?
Такой, как для Python - чтобы на лету проверял форматирование на соответствие стандарту и подсвечивал проблемные места с рекомендацией по исправлению.
54 3350639
>>50620
там только одна рекомендация будет - НЕ ИСПОЛЬЗУЙ VSCODE
55 3350647
>>50583

>Вполне нормальный синтаксис.



согласен?.Вполне()?.Нормальный(x => Синтаксис())!
56 3350660
>>50639
Дохера всего, но этим никто не пользуется. В дотнете нет таких проблем
57 3350674
>>50647
И причем тут Nunit?
58 3350679
>>50620
Два варианта.
- .editorconfig
- stylecop

Можно как вместе использовать, так и по отдельности.
59 3350686
Вот есть у меня класс
class myass
{
public char A;
}

Мне нужно создать динамический список из таких объектов. Чтобы самому с этим делом не ебаться использую коллекцию
List<myass> Asses = new List<myass>();
Могу добавлять туда объекты, всё пучком.

А теперь мне надо создать динамический список таких коллекций. Хотелось бы для этого тоже использовать коллекцию. Как бы коллекция коллекций. И вот тут я чёт затупил, на уровне синтаксиса не понимаю как это должно выглядеть. Вкиньте пример хоть что ли.
60 3350687
>>50686

var listOfListOfMyAsses = new List<List<myass>>();
listOfListOfMyAsses.Add(new()); // добавляем первый список
listOfListOfMyAsses.Add(new()); // добавляем второй список

var list1 = listOfListOfMyAsses[0]; // первый список
var list2 = listOfListOfMyAsses[1]; // второй список
{40F00034-4969-46DF-AF14-FCB7768549DD}.png23 Кб, 495x429
61 3350688
Чет неделю пописал на плюсах и теперь мне стандартный формат шарпов не нравится.

Хочу вот так теперь в шарпах.

Как сделать, чтобы студия по умолчанию так же делала?
62 3350694
>>50688
Я знаю, но не скажу. Не хочу чтобы мудацкий K&R кто-нибудь тащил в мои шарпы.
63 3350696
Как K&R сделать я и сам знаю.

Мне хочется чтобы не было отступов внутри неймспейса и класса. Плюс - модификаторы доступа на отдельной строке.

Типа вот так:

namsepace Foo;

class Bar {

public
void Buzz();

}
64 3350714
>>50614

>Душа .NET платформы



Автомаппер?
65 3350718
>>50620

>линтер



Именно линтера нет, у нас другие категории. >>50696

>Мне хочется чтобы не было отступов внутри неймспейса и класса.



внутри неймспейса и так не будет отступа, если использовать file scoped namespace

внутри класса - боюсь, тебе придётся самом поискать, как это делается. Мы обычно пользуемся настройками по умолчанию
66 3351199
здесь есть аноны которые могут в winapi? я хочу отследить потоки у всех процессов в винде которые используют GetRawInputData (при движении мышкой)

https://github.com/mfakane/rawinput-sharp/blob/master/RawInput.Sharp.SimpleExample
67 3351203
>>51199
Про WinAPI лучше спрашивать у байтоёбов, они в соседнем треде сидят.
68 3351278
>>50088

>А когда в нее лезут - зовут тех кто шарит, а не чела, который такие вопросы задает.


Анон, у тебя какое-то неправильное впечатление по отношению к заводам сложилось. Да и не завод у меня, а КБ военка Никто никого звать не будет, если темой занимаешься ты - тебя и заставят пердолится, и будут заставлять пока не сделаешь. Так что у меня вариантов нет.

>>51203
Это в котором?
изображение.png867 Кб, 1280x607
69 3351284
>>50687
Не работает твоя хуита. В частности подчёркивает пустые скобочки, и ещё чо-то было, не помню.
listOfListOfMyAsses.Add(new());

В общем сам разобрался. Учись салага.
70 3351308
>>50688
Ебать ты пидармот вырвиглазный. Все блять пятнисто-цветастое как приход нарколыги под лсд или очко павлина. Не удивительно чты тупорылый овощ ведь в башке насрано вместо мозгов нахуй!
71 3351391
>>51284

Вы учите друг друга, как объекти в список добавлять?

А ничего, что в 2к24 году такой хуйнёй никто не занимается, потому что это ответственность автомаппера?
72 3351398
>>51308
Как же заебали нейросети в тематике.
73 3351478
>>47352 (OP)
Хочу укатиться к вам с пыха, есть смысл влезать в эту авантюру или по деньгам/вакансиям шарпа все сейчас плохо в рф? Меня заебло перекатываться по проектам с написанием магазинов дилд для ИП Оленян.
74 3351503
>>51478
Иди в бигтех, там толкового пхпшника с радостью заберут и переучат на говноланг
Зачем тебе полумертвый шарп
75 3351524
>>51503

хуй знает, что более полумертво, голэнг или c#. Сейчас все пишут на автомаппере
76 3351526
>>51503
Почему полумертвый? Я наоборот только пару лет назад стал о нем слышать в среде разработчиков. До этого дотнет считался зашкваром для пользователей виндовса.
77 3351535
>>51526

Когда дотнет считался зашкваром?

Дотнет хорош тем, что он не категоричный. В нём нет отбитых установок и мантр типо "ВСЁ ДОЛЖНО ДЕЛАТЬСЯ ОДНИМ СПОСОБОМ" или "ВСЁ ЕСТЬ ФУНЦИЯ" или "ООП ЭТО ВЫСШЕЕ ЗЛО" и прочей хуеты наподобие "БАТАРЕЙКИ ВКЛЮЧЕНЫ"

Дотнет в этом плане просто предоставляет языки и возможности писать программы в каком хочешь стиле. Он ненавязчивый и приятный. За то его и любим
78 3351663
>>51391

>автомаппера


Не слышал о таком.
79 3351677
>>51535
На дотнете не осталось чистого бекенда, один сраный фулстек у нищебродов.
80 3351730
>>51677

я для тебя пустое место, что-ли
81 3351756
>>51677
Ну как в родном пхп!
82 3351769
>>51756
Щас бы в 2025 доверять каждому спорному утверждению на дваче.
1650181920745.png28 Кб, 377x649
83 3351783
>>49467

> NUnit мне не нравится.


Что именно не нравится?

Xunit уже научился разбивать именованные кейсы по разным элементам в обозревателе тестов?
Даже количество тестов не умеет считать, пиздец убожество.
84 3351887
>>51783

>Что именно не нравится?



NUnit громоздкий комбайн, там раз в 40 больше кода, чем в xUnit и MSTest вместе взятых. Куча неймспейсов, всякого мусора. Он некорректно обрабатывает жизненный цикл тестов, переиспользует поля класса и это не настраивается.

Ну и в NUnit уебанский нетипобезопасный синтаксис ассертов, который выкинуть нельзя, и работает он как говно.

Кто будет писать вот такое:
Assert.That(1. Is().IsGreaterThan(x => x.To(1))).
если можно писать вот такое:
True(x>2);

Почитай исходный код обоих. XUnit писался после NUnit, с учётом всех ошибок. Он внутри крайне логичен и прост. NUnit же выглядит как переусложнённое хуй пойми что.
85 3351897
Ненавижу юнит-тесты!
86 3352045
>>51897
Чего их ненавидеть-то?

Мы с одним разрабом поспорили. Он сказал, что запилит сложную фичу только по тестам, ни разу не запуская проект.

И ведь не обманул, чертяка.

Я с тех пор начал относиться к тестам по другома. Просто представь, что результат отладки проекта остаётся лежать внутри проекта и автоматически запустится когда какой-то хуй полезет в код уже реализованной фичи.
87 3352052
>>52045
Потому что тесты вынуждают его думать.
88 3352103
>>51897
Люблю юниты, но когда они в меру. Ненавижу дрочь на процент покрытия.
1625739660668.png77 Кб, 1022x456
89 3352113
>>51887

> Assert.That(1. Is().IsGreaterThan(x => x.To(1))).


Франкентшейн какой-то, ты маМорозко ошибся. Смотри пик.

Как по мне, такой синтаксис охуенный и удобный. В таком варианте у тебя не возникает мысли каким аргументом идёт expected, а каким actual.

> Он некорректно обрабатывает жизненный цикл тестов


Приведи пример, что ты под этим имеешь ввиду.
90 3352150
>>52113

>Франкентшейн какой-то, ты маМорозко ошибся. Смотри пик.



Вижу на скрине уродливый набор слов

> В таком варианте у тебя не возникает мысли каким аргументом идёт expected, а каким actual



Всем похуй. В нормальных фреймворках давно уже забили хyй на это педантичное недоразумение и поменяли слова actual/expected на left/right.

Но NUNIT-выблядки высосали из пальца проблему, понаписали каких-то синтаксисов на несколько десятков тысяч строк и в приказном порядке задепрекейтили всё, что было ранее.

Чего там удобного - я xyй знает. Только почему-то в других фреймворках это "удобство" не стали затаскивать.

> Он некорректно обрабатывает жизненный цикл тестов



Там за каким-то xyем сделали общее состояние тестов внутри одного класса. А надо чтобы настраивалось. Скопипастили с java [Setup] и [TearDown], которые в принципе ничего не меняют, но сами по себе уродливое говно, вызванное ограничениями джавы и внутренним устройством Junit.

Когда я увидел, как в xUnit не стали eбать мозг атрибутами и сделали конструктор-диспоз, а так же возможность полностью настраивать жизненный цикл тестов - я на nunit стал смотреть просто как на какое-то недоразумение. xUnit разработали с чистого листа те же самыe люди, что делали NUnit, кстати, не забывай.
91 3352230
>>52113

>Как по мне, такой синтаксис охуенный и удобный


как по тебе
эти (модульные) тесты пишут и ЧИТАЮТ программисты
а программистам привычно читать именно код, а не вот эту англохрень.

еще можно понять всякие ShouldBe в названиях тестов потому что их могут гонять всякие гуманитарии, но в теле модульного теста это нахрен не нужно
92 3352394
Гайс, кто-нибудь работал на проектах с DDD? В прошлом треде вот не очень хорошо отозвались о нём, а может, у кого-нибудь и положительный опыт есть?
93 3352434
>>52394

> кто-нибудь работал на проектах с DDD?



С какой его частью?
94 3352485
>>52394
Как всегда же
достоинства для одного является недостатком для другого.
Вопрос выбора стула во всей красе.

пример медиатр
киллер-фича - нет прямой связи между отправителем и подписчиком
фатальный недостаток - нет прямой связи между отправителем и подписчиком

таким образом речь говорящего о плюсах будет всегда предвзята. (впрочем и о минусах тоже)
95 3352491
>>52485

не буду сегодня мандеть про медиатр, всё-таки новый год на носу
96 3352511
>>52045

>Мы с одним разрабом поспорили. Он сказал, что запилит сложную фичу только по тестам, ни разу не запуская проект.


>


>И ведь не обманул, чертяка.


Только наебал он тебя похоже. Либо он глубоко в контексте был либо результат был тупо подогнан к тестам (чем собственно и плох TDD).
97 3352547
>>52045
Тесты и есть запуск проекта
1653983096579.png199 Кб, 1104x1368
98 3352582
>>52150

> Всем похуй. В нормальных фреймворках давно уже забили хyй на это педантичное недоразумение и поменяли слова actual/expected на left/right.


В нормальных это в каких?

В xunit сигнатура метода выглядит так:
void Equal<T>(T expected, T actual)

И если перепутать, то в обозревателе тестов они тоже будут перепутаны. Так что не пизди.

> Скопипастили с java [Setup] и [TearDown],


Ну и чем это на практике отличается? Ничем.
Пикрелейтед.
Концептуально xunit с конструктором и дизпозом выглядит интереснее, но на практике разницы нет.

> Но NUNIT-выблядки высосали


Это поэтому сейчас в 3-ий xunit, спустя 10+ лет высосали TestContext? Ведь изначально НИНУЖНО.

А так, что в nunit, что в xunit косяков предостаточно.
Но косяки xunit для меня критичнее, поэтому использую nunit.
3 версию xunit надо погонять детальнее, но сомневаюсь, что там что-то глобально изменилось.

>>52230

> еще можно понять всякие ShouldBe в названиях тестов потому что их могут гонять всякие гуманитарии, но в теле модульного теста это нахрен не нужно


И? В чём претензия-то? У nunit тесты прекрасно читаются, даже гуманитарии могут. Смотри:

Утверждение.Что(результат, Действительно.БольшеЧем(2));

А вот залупа в виде ShouldBe не нужна.
1653983096579.png199 Кб, 1104x1368
98 3352582
>>52150

> Всем похуй. В нормальных фреймворках давно уже забили хyй на это педантичное недоразумение и поменяли слова actual/expected на left/right.


В нормальных это в каких?

В xunit сигнатура метода выглядит так:
void Equal<T>(T expected, T actual)

И если перепутать, то в обозревателе тестов они тоже будут перепутаны. Так что не пизди.

> Скопипастили с java [Setup] и [TearDown],


Ну и чем это на практике отличается? Ничем.
Пикрелейтед.
Концептуально xunit с конструктором и дизпозом выглядит интереснее, но на практике разницы нет.

> Но NUNIT-выблядки высосали


Это поэтому сейчас в 3-ий xunit, спустя 10+ лет высосали TestContext? Ведь изначально НИНУЖНО.

А так, что в nunit, что в xunit косяков предостаточно.
Но косяки xunit для меня критичнее, поэтому использую nunit.
3 версию xunit надо погонять детальнее, но сомневаюсь, что там что-то глобально изменилось.

>>52230

> еще можно понять всякие ShouldBe в названиях тестов потому что их могут гонять всякие гуманитарии, но в теле модульного теста это нахрен не нужно


И? В чём претензия-то? У nunit тесты прекрасно читаются, даже гуманитарии могут. Смотри:

Утверждение.Что(результат, Действительно.БольшеЧем(2));

А вот залупа в виде ShouldBe не нужна.
99 3352598
>>52582

>Утверждение.Что(результат, Действительно.БольшеЧем(2));


Идиотизм от гуманитариев
Почему ты код в самом приложении так не пишешь?
Не торопись, подумай)
100 3352601
>>52598

> Почему ты код в самом приложении так не пишешь?


Ты дурачок? Не путай мягкое с тёплым.
101 3352607
>>52601
не путаю. мы говорим про модульные тесты, тело которых пишет и читает программист
Так зачем он изворачивается для гуманитариев?
чтобы гуманитарий мог прочитать Assert?
Простите, а остальная часть, там где получается expected, она тоже написана в стиле "Я.Люблю.Тупо.Выражаться"? или все же там банальный код, который гуманитарий не поймет? А если еще и фикстуру сюда добавить, то вообще у него мозг взорвется

А поэтому вопрос тот же - ЗАЧЕМ ЗАМЕНЯТЬ КОД СЛОВЕСНОЙ ЕБАЛОЙ? и почему у защитника этого говна подорвался пукан когда его спросили "а почему ты везде так не пишешь?"?
102 3352661
>>52601
Ты дурачок. Нормальные люди пишут Assert.GreaterThan(result,2) и оставляют комментарий почему 2, если там что-то неочевидно. Долбоебы срут монадами в стиле Утверждение.Что(результат, Действительно.БольшеЧем(2)) ведь это же необычно выглядит мам ну смотри.
103 3352708
>>52582

>Концептуально xunit с конструктором и дизпозом выглядит интереснее, но на практике разницы нет.



https://xunit.net/docs/shared-context . Разница на практике огромная. Как в NUnit делать, чтобы у тест-класса не было общего состояния в полях? никак?
104 3352709
>>52582

>И если перепутать



нихуя принципиально не сломается

> А так, что в nunit, что в xunit косяков предостаточно



я не понял, какие там косяки, xunit простой как палка, там буквально нечему ломаться

> В чём претензия-то?



ВТом.Утвержедение(говно, Оно.Как.Читается(говно))
105 3352710
>>52661

> Нормальные люди


> оставляют комментарий



комментарии надо удалять сразу как видишь и по пальцам палочкой бить дурачкам, которые их пытаются поддерживать
106 3352712
>>52661

>Assert.GreaterThan(result,2)



Проверить что 2 больше чем результат или наоборот?

Просто импортируешь статический класс Assert и пишешь:

True(result > 2);
Equal(2, result)

И всё. Два метода по сути нужно, всё остальное - это происки дьявола
107 3352723
>>52712
Коллекции как проверить?
108 3352744
>>52723

На элегантном английском

Assert.That(collection, It.That.Is().Should(have => have.At(x => x.Least).Single().Equal[item]))
109 3352753
>>52744
В голос!
110 3352778
>>52744
Шедевер.
111 3352802
>>47352 (OP)
Сори за офтоп, но:

Я новенький, не ебите.
Вкатываюсь в айтишечку, в моем городе вакансий очень мало, поэтому если меня развернут то выбора особо не будет.
Поэтому спрашиваю - насколько типичны дистанционные собесы у контор в мск для людей без опыта?

Т.е. во первых насколько распространены дистанционные собесы вообще?

во вторых какие шансы есть у чела без опыта на релокейт в мск?
112 3352818
>>52607
Ебать у тебя каша в голове. Доебался до гуманитариев. Основной разговор-то не об этом был.

>>52708
Разница настолько огромна, что у них примеры из документации не комплируются.

> stack.Dispose();



> нихуя принципиально не сломается


Ты точно в этом уверен? Сходи проверь, а потом пизди.

> ВТом.Утвержедение(говно, Оно.Как.Читается(говно))


Разница в синтаксисе, не более.
Кому-то хуи, а кому-то пики.

>>52744
Неиронично охуенно выглядит))))
113 3352828
>>52818

>Разница в синтаксисе, не более.



В xUnit библиотека ассёртов опциональна. Подключай какую хочешь, хоть nunit.

В NUnit ассёрты встроены. Половина из них задепрекейчана

Вот и вся разница
114 3352834
>>52828

> В xUnit библиотека ассёртов опциональна. Подключай какую хочешь, хоть nunit.


Это каким образом? оО

> В NUnit ассёрты встроены. Половина из них задепрекейчана


У них 2 модели: классическая и на основе ограничений. С 3 версии модель ограничений стала основной. Так что не понимаю о чём ты.
https://docs.nunit.org/articles/nunit/writing-tests/assertions/assertions.html
115 3352837
>>52818

>Доебался до гуманитариев


а до кого еще.
все эти should be пошли из за того, что кое кто, кто не программист, решил читать красивые английские фразочки в интеграционном тестировании

Так что к НАЗВАНИЯМ тестов не придируюсь. Придираюсь к телу теста, где КОДЕР пишет поэму непонятно нахера
ты так и не ответил ЗАЧЕМ.

>Неиронично охуенно выглядит))))


ааа, все понятно. ебанутая (с)
тогда вопрос снят
2024123013h41m35sgrim.png146 Кб, 742x873
116 3352928
>>52834
https://xunit.net/docs/nuget-packages

То, что в xUnit библиотека ассертов опциональна - это в документации описано.

Подключить нютиновские ассерты теоретически можно, но придётся затащить весь комбайн. Это никому не нужно, потому что nunit уебанский
117 3352938
>>52834

>У них 2 модели: классическая и на основе ограничений. С 3 версии модель ограничений стала основной. Так что не понимаю о чём ты.



У них одна модель. Та, которая называется классической моделью объявлена устаревшей и не поддерживается. Вместе с тем весь пользовательский код (в моём случае 50 000 тестов) так же объявлен устаревшим.

Собственно это и есть основная моча в ебало разработчикам нюнит. Они не спросив пользователей в обязательном порядке перевели всё на новые весьма специфические ассерты наплевав на существующий код.

А МНЕ ОНИ НЕ НРАВЯТСЯ, Я СЧИТАЮ, ЧТО У НИХ СИНТАКСИС ГОВНО
118 3352963
>>52802

>Т.е. во первых насколько распространены дистанционные собесы вообще?


Сейчас почти все собесы удаленные. Даже там где работа фултайм офис, скрининг и первый тех.собес проводят удаленно.
Собесы в офисе первый признак говноконторы.

Новичков тоже собесят преимущественно удаленно, для них сложно просто на собес попасть как таковой.

>>52802

>во вторых какие шансы есть у чела без опыта на релокейт в мск?


Практически никаких. Только удаленка. Хотя в теории ты можешь устроиться сначала удаленно и потом своим ходом двинуть в МСК, но з.п. тебе все равно оставят региональную.
119 3352966
>>52837

>все эти should be пошли из за того, что кое кто, кто не программист, решил читать красивые английские фразочки в интеграционном тестировании


У нас бизнес-аналитик постоянно лезет в код и пытается писать по нему спеки. Ему кучу раз говорили, чтобы не маялся хуйней и тупо смотрел в сваггер где есть вся документация и модели, но ему все равно надо повыебываться и показать, как он умеет читать код.
120 3353001
>>52966

>бизнес-аналитик


Это же специальный гуманитарий, который описание тасок в джире заполняет, зачем ему вообще лезть в код?
121 3353011
>>53001
Очевидно же, что они путают системного и бизнес-аналитика.
122 3353043
>>53001
>>53011
Он типа универсальный и бизнес и системный. Только вот даже системному аналитику нехуй в коде делать.
123 3353179
>>52938
Кто вам долбоебам мешал постепенно от них уйти? Каждый раз как код правишь штук 100 быстро передалал.
Я за день 2000 тестов менял.
124 3353185
>>53179

>Кто вам долбоебам мешал постепенно от них уйти?



единогласно решили уйти на xUnit. Так дешевле. Никто не выразил желания переписывать тесты на новый мусорный синтаксис
125 3353238
>>52963
Спасибо, очень полезная инфа.
А насколько охотно берут на удаленку без опыта? Там требования для джуна без опыта будут выше?
126 3353245
>>53238
Без опыта вообще не берут. Напиши в резюме два года опыта в местном ООО SmartBestWay, никто же не проверит.
127 3353248
>>53238

>Там требования для джуна без опыта будут выше?


Требования сейчас для всех заоблачные. Даже если ты сам Хейльсберг, то с очень большой вероятностью завалишь собес на .net разраба.

>А насколько охотно берут на удаленку без опыта?


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

Нарабатывай опыт любыми путями. Если учишься в шараге - корешиьс с преподами и выбивай у них любую практику. Или кооперируйся с сокурсниками и мутите вместе какие-нибудь сервисы (да хоть сраных чат ботов).

Еще могу дать совет помимо джуновских вакансий откликаться на мидловые, особенное если там есть открытое тестовое (естественно его нужно сделать качественно перед откликом). Просто по опыту на такие позиции людей ищут с меньшим количеством выебонов на собесе, т.к. тут нужны просто рабочие лошадки которые будут работать работу. У меня так товарищ с околонулевым опытом залетел (понятно, что зарплата у него по итогу была джуновской, а не той что в вакансии указана для мидла)

Можешь еще завести себе карманную it-херочку, тогда будешь в курсе всех вакансий и возможность, чтобы твое резюме подсунули на них в обход фильтров.
128 3353251
>>53248
Спасибо.
То есть нужно почти 100% иметь в резюме личные проекты? Я в целом так и думал, но свободного времени у меня полно так что это не проблема.

>it-херочку


Это что?
129 3353252
>>53245
>>53248
То есть опыт не обязательно должен быть рабочим и личные проекты это тоже опыт, да?
130 3353254
>>53252

>То есть опыт не обязательно должен быть рабочим и личные проекты это тоже опыт, да?


Есть, типа, две категории. Просто опыт разработки и опыт коммерческой разработки. Первое это любая разработка хоть чего и хоть как. Вторая подразумевает разработку чего-то, что потом будет продано за деньги или принесет любую другую прибыль. Там уже учитывается работа в комманде, знание различных этапов разработки, понятия сроков, задач, всякой хуйни вроде водопадов, agile, scrum и т.д.

Если в вакансии прямо написано, что-нибдуь вроде "опыт коммерческой разработки N лет", то вероятнее всего там ты со своими личными проектами не проканаешь. Только если это будет, что-то крутое попенсорсное, что хотя бы в своей нише известно.

>>53251

>Это что?


It-рекрутер.

>>53251

>То есть нужно почти 100% иметь в резюме личные проекты?


Голое резюме сейчас нафиг никому не нужно, т.к. за время любой учебы можно спокойно сделать пару-тройку проектов, либо поучаствовать в какой-либо практике. Если у тебя такого нет, то значит ты во время учебы хуи пинал и будешь не интересен.
131 3353347
>>53254

>Вторая подразумевает разработку чего-то, что потом будет продано за деньги или принесет любую другую прибыль.



Могу ли я сказать что у меня есть опыт коммерческой разработки если я писал людям за деньги их софт по заказу?

Регеры, парсеры, тг боты, еще всякая хуйня типо получение писем с почт по imap, парсинг и отправка данных по апи в ии. Твиттор и CRM не писал.
132 3353502
>>53347

>Твиттор и CRM не писал.



кто CRM не писал, тот красот не видал
133 3353827
Сегодня я точно начну учить бэкенд, и к концу года стану уважаемым бэкендером и забуду про впф как про страшный сон.
134 3353828
>>53827
Бэкендером быть охуенно. Никакой тебе верстки, никакого js, никакого ебучего xaml-а. Выкинул наружу api и похуй кто там и как с ним трахаться будет. А сам сидишь, спокойно возишься с мидлварями и хостед сервисами и довольно урчишь.
135 3353830
>>53828
Ты бекендер на Weather forecast? ☁️
136 3353832
>>53830
За что уплочено, то и наговнокожено.
137 3354527
>>53830
Нет, contosopizza
138 3354529
>>53830
На автомаппере.
139 3354540
>>54527

>contosopizza


Бля, у меня на руках полураспиленный монолит, его обратно собирать или дальше распиливать?
140 3354613
Вспомнил основные аргументы в пользу использования библиотеки Медиатр. Они долбоёбские и высосаны из глобуса. Мне один челик сказал, что ему стрёмно, что в конструкторе много зависимостей. Другой говорил, что он может бехевиоры делать (читай, валидаторы).
Еще говорили, что не хотят регистрации прописывать в контейнере.

Я сейчас работаю на проекте без медиатра. Пишу команды и квери, всё резолвится само, регистрации через атрибуты. В конструкторах контроллеров до 4-5 зависимостей.

Проблем не вижу. Код получается классный.

Неужели медиатр-бляди не решают никаких конкретных проблем?
141 3354666
Реквестирую срочный короткий гайд по нет мауи.
Взял проект небольшой, 1 страничное приложение с полем ввода и кнопкой. А я хуй знает маиу хуи я только сосольки и блазор писал.
Нужно за сутки научится.
142 3354667
>>54666
изучай jetpack compose
143 3354668
>>54667
>>54666
Сорян не уточнил.
Виндовс.
Собственно там манипуляции с текстом проводить. Ниче сложного, но так как я не шарю нихуя в этих все формочках авалониях хуениях и прочем впф нет мауи то для меня немножко сложно.
144 3354669
>>54668
я знаю. поэтому повторяю свой совет чтобы увидеть насколько все эти мауи ХРЕНЬ
145 3354672
>>54669
Спорить не буду.
Но у меня нет времени.
Надо выбрать что то максимально простое.
На слуху авалония. Мб её?
146 3354673
>>54672
Д - ДЛЯ ЧЕГООООООО???????
147 3354674
>>54672
Ну тогда бери винформы, проще винформ нет вообще ничего. Ты же ставишь во главу угла простоту, а не удобство, расширяемость, поддерживаемость.
image.png13 Кб, 552x183
148 3354675
Во это вот че ваще такое?
Темый лес ппц
149 3354678
>>54675
Это то, что учится намного дольше суток.
150 3354679

>проще винформ


Не ну не так шоб прям на столько проще.
Я все таки из актуальных хочу выбрать чо то
151 3354680
>>54674
WPF и то проще лол
сам слез с формсов на впф и как то попробовал на формсах - нихрена не помню и не вижу смысол
152 3354709
>>54613
Медиатор бляди выросли из блядей для которых CS это страшно и вообще книги дядюшки Боба они старые, а в ИТ все меняется часто.

Они искрене верят что под зависимостями имеют ввиду именно прямые зависимости поэтому для них медиатор их устраняет. Было у тебя 8 внедрений стало 3, значит устранили 5 зависимостей.
Я пытался объяснить что зависимости просто стали неявные и скрытые от глаз, те 5 классов все ещё влияют на работу текущего, мне даже сказали что понимают это но так КОД ЧИЩЕ.

Это буквально такой новый сорт разрабов, что ужасно от тренни до лидов, им главное что зависимостей нет явно или код выглядит чисто.
Оже самое кстати модные ДДД. Я сижу на архетектурной секции и задаю логичный вопрос. Почему сущность сама управляет сменой статусов модели. На что получаю ответ что это же агрегат. Дальше я наваливаю логичные варианты
1) кто в таком случае должен писать историю смены статуса(в широком смысле вообще вести аудит)
2) если понадобится сделать уведомления. Это тоже будет делать агрегат? Вообще кто должен обслуживать всю попутную логику которая будет сверху?
3) эта хуйня явным образом нарушает S принцип. Entity это класс ответственный за представление данных реляционой базы в объектах предметной области. Возложение на него ответственности за управление статусной моделью сущности это нарушение SOLID.
В результате диспута меня мягко послали нахуй сказав что я просто неверно толкую термин responsibility, а первые два пункта не находятся в скоупе задач на спринт.

Вообще Аджайл раковая опухоль ИТ. Нам необходимо сделать грузовик, все знают что нужен 8 осный грузовик с бочкой для бензина, но мы начинаем не с создания рамы ходовой, а с багги. Так можно сразу показать результаты. Да клиенту нахуй не нужен ни багги, ни кабриолет, ни микроавтобус, ни грузовик с 4 колесами. Ему нужен бензовоз блять с 8 осями и нет не надо ему ничего показывать. Надо чтобы он подписался под ТЗ на бензовоз с 8 осями и если посреди монтажа кузова ему захочется сделать 10 осей мы шлем его нахуй и требуем ещё денег и увеличиваем сроки.
152 3354709
>>54613
Медиатор бляди выросли из блядей для которых CS это страшно и вообще книги дядюшки Боба они старые, а в ИТ все меняется часто.

Они искрене верят что под зависимостями имеют ввиду именно прямые зависимости поэтому для них медиатор их устраняет. Было у тебя 8 внедрений стало 3, значит устранили 5 зависимостей.
Я пытался объяснить что зависимости просто стали неявные и скрытые от глаз, те 5 классов все ещё влияют на работу текущего, мне даже сказали что понимают это но так КОД ЧИЩЕ.

Это буквально такой новый сорт разрабов, что ужасно от тренни до лидов, им главное что зависимостей нет явно или код выглядит чисто.
Оже самое кстати модные ДДД. Я сижу на архетектурной секции и задаю логичный вопрос. Почему сущность сама управляет сменой статусов модели. На что получаю ответ что это же агрегат. Дальше я наваливаю логичные варианты
1) кто в таком случае должен писать историю смены статуса(в широком смысле вообще вести аудит)
2) если понадобится сделать уведомления. Это тоже будет делать агрегат? Вообще кто должен обслуживать всю попутную логику которая будет сверху?
3) эта хуйня явным образом нарушает S принцип. Entity это класс ответственный за представление данных реляционой базы в объектах предметной области. Возложение на него ответственности за управление статусной моделью сущности это нарушение SOLID.
В результате диспута меня мягко послали нахуй сказав что я просто неверно толкую термин responsibility, а первые два пункта не находятся в скоупе задач на спринт.

Вообще Аджайл раковая опухоль ИТ. Нам необходимо сделать грузовик, все знают что нужен 8 осный грузовик с бочкой для бензина, но мы начинаем не с создания рамы ходовой, а с багги. Так можно сразу показать результаты. Да клиенту нахуй не нужен ни багги, ни кабриолет, ни микроавтобус, ни грузовик с 4 колесами. Ему нужен бензовоз блять с 8 осями и нет не надо ему ничего показывать. Надо чтобы он подписался под ТЗ на бензовоз с 8 осями и если посреди монтажа кузова ему захочется сделать 10 осей мы шлем его нахуй и требуем ещё денег и увеличиваем сроки.
153 3354735
>>54613

>Неужели медиатр-бляди не решают никаких конкретных проблем?


Не решают. Это просто модьненько и позволяет тонкие контроллеры писать. Ну и да, в пайплайн можно всякое добавить еще вроде валидации. Удобно.

Но ничего такого нового и прямо необходимого медиатр не дает.
154 3354740
>>54709

>Entity это класс ответственный за представление данных реляционой базы в объектах предметной области.


Ентити это не агрегат. Агрегат это толстая модель. То что там в реальном мире все все путают это не проблема ДДД.
155 3354757
>>54740
Проблема ддд в том что плюсы НЕ перевешивают бубен вприсядку
156 3354786
>>54673
Либо волчара напиздевший в резюме. Либо (судя по тому что 3-е января) студент, проебавший сессию и договорившийся с преподом на последний шанс досдать лабы после праздников.
157 3354795
>>54786
Яж сказал что взял проект на 50$
158 3354821
>>54795
Ну тогда ты демпингатор/штрейхбрекер хуев.
Это даже хорошо. Вот сейчас обосрешься и на одного заказчика понимающего, что за "дешево и быстро" можно получить только хуй на блюде станет больше.
159 3354861
>>54740

>То что там в реальном мире все все путают это не проблема ДДД.



Да, блядь, никто не может до конца понять DDD до конца. Это не не то протокол, не то секта. Там ключевых понятий более двадцати, думаешь про одно, 19 в уме надо держать.

Я не видел ни одного разработчика, который до конца бы понимал DDD. А те, кто понимают - не практикуют разработку, а ведут курсы на нереалистичных примерах.

Я, если честно, предпочёл бы калёным железом эти слова выжечь и начать всё с начала.
160 3354862
>>54669

> немножко сложно.



иди пейфон программируй
161 3354867
>>54861
Если все не могут правильно понять какую-то штуку, то это не проблема людей, а проблема штуки.
У ДДД есть очевидная проблема. Все эти понятия слишком размытые и зависят от каких-то эфимерных признаков.
162 3354868
>>54709

>КОД ЧИЩЕ.



Ебать, там такой говнокодище получается, где хуй разберёт где начало, а где конец.

>>54735

> позволяет тонкие контроллеры писать


а что-то мешает писать тонкие контроллеры без медиатора?

> модненько


нихуя себе модненько, 10 лет назад таким говном занимались, зачем повторять ошибки - хз.
163 3354871
>>54675

> мычание долбоёба



иди пиши на пиши на пейфоне. Дотнет оставь, это не для таких ебланов как ты
164 3354993
>>54821
50$ за одностраничное приложение с 2мя полями ввода и 1 кнопкой и логикой на очистку файла это дёшево?
165 3355017
>>54993
Да. Это 3-4 часа работы или примерно 12 баксов в час. 2100 в месяц
166 3355038
>>55017

>Это 3-4 часа работы


Ну у меня было бы так если бы это было консолька
А так это 2 дня)

>2100 в месяц


Ну 2к в месяц, мало штоли?
Ну это ты бы взял 150$ но не всего могут выбирать че и за сколько им делать.
167 3355077
>>55038
Ты просто выбрал неверный путь "работать за деньги"
168 3355088
>>55077
А какой путь верный? Работать за идею?
169 3355162
>>55088
нет. просто получать деньги
а код писать для души
170 3355165
>>55162

>а код писать для души


Я бы рад конечно так делать но для этого надо сначала получать деньги)
171 3355281
>>55165
дык получай. на заводе вон токарей не хватает.
а фриланс зло
172 3355318
>>55281
>>55281
Дак я и получаю но тебя это не устраивает.
173 3355332
>>55318
Меня? Это ты жалуешься что не просто денежку дают, а и код писать надо
174 3355365
>>54757
Вообще говоря да - так и есть. В ддд есть интересные концепции, но в целом оно скорее полезно тем, что у тебя должно быть в голове, когда ты пишешь код, а не про сам код.

На деле совсем отдельный домен со всей бизнес логикой нахуй не нужен.
175 3355445
>>54867

>У ДДД есть очевидная проблема.


Еще одна проблема ДДД, то, что под ней должна быть охуенная аналитика, с четкой и вылизанной спецификацией. Что встречается почти никогда.
176 3355446
>>54861

>Я, если честно, предпочёл бы калёным железом эти слова выжечь и начать всё с начала.


В 2025 году разработка ушла в облака, там ДДД нахуй не нужен. Пока ты будешь собирать агрегат агрегатов с 20 сервисов шобы было ДДД, конкуренты прокинут джейсончик и зарабортают все деньги. ДДД остался в каких-то древних учетных системах из 90-х, сейчас никто так не пишет.
177 3355448
>>55446
Ага, выходит, суть облачного подхода в том, чтобы по-быстрому наговнякать приложуху как получится и будь что будет, а учётные системы больше никому не нужны, ведь учитывать надо только количество деняк на карточке.
178 3355454
>>55448
Суть облачного подхода в распределенных данных и распределенных транзакциях. В ДДД все красиво, пока все данные лежат рядом в одной бесконечной памяти, тогда можно наворачивать агрегаты агрегатов и выделять слои слоев. Как только встает вопрос "кто откатывает транзакцию", ДДД пукает и обмякает.
179 3355471
>>55446
В рф вообще пользуются местными облаками?
180 3355481
Мда, в шарпохуйне я не могу передать this в базовый конструктор, пиздец...
181 3355482
>>55471

Яндекс-облаком пользуемся. Его скопипастили с амазона, но у амазона интерфейс делали долбоёбы. После AWS, консоль яндекс кажется каким-то космическим и суперсовременным.
182 3355484
>>55481

> Мда, в шарпохуйне я не могу передать this в базовый конструктор, пиздец...



Потому что ты долбоёб. Базовый конструктора вызывается раньше чем дочерний. Чего ты там передавать собрался?

Дотнет не для тебя, если ты такие тупые мысли выдаёшь. Иди программируй на пейфоне. Ну или на котлине, если тебе нужен выразительный язык. Но в дотнет не лезь
183 3355489
>>55481

>передать this в базовый конструктор


Нахуй не нужно.
Ебани protected метод инициализации в базовом классе принимающий нужный объект и сохраняющий его в какойм-нибудь поле. И передавай через него this в конструкторе потомка.
184 3355496
>>55484
Покажи, где тебя трогали питонисты, а то вижу, что они не дают тебе покоя, весь тред своих протыков вспоминаешь.
185 3355543
>>55454

>Как только встает вопрос "кто откатывает транзакцию", ДДД пукает и обмякает.


Так в облаках не должно быть транзакции. Необходимо строить систему на основе ассинхроных моделей и сообщений с событиями. Либо иметь единый сервис оркестратор который знает про бизнес процесс и как им управлять.
186 3355552
>>55543

>Так в облаках не должно быть транзакции. Необходимо строить систему на основе асинхроных моделей и сообщений с событиями.



Это надо угадать как-то или между строк прочитать? А как понять, где заканчивается ДДД и начинаются паттерны микросервисной архитектуры?

> Либо иметь единый сервис оркестратор который знает про бизнес процесс и как им управлять.



Нанять пару архитекторов, чтобы в гамаках лежали и кафку обсуждали.
187 3355553
ДДД ещё очень интересно ложиться на EF который предлагает для оптимизации грузить из БД только внешний ключ, потому что для работы обычно он и нужен.
188 3355555
>>55552

>Это надо угадать как-то или между строк прочитать? А как понять, где заканчивается ДДД и начинаются паттерны микросервисной архитектуры?


Я вообще противник ДДД и идеи что нужны какие-то агрегаты и объекты которые сами себя меняют.

Моё ИМХО что ДДД вообще противоречит микросервисам.
189 3355561
>>55555

реально писать микропенисы в функциональном стиле с реббитом и событиями? Я просто пытался много раз понять ДДД - и каждый раз как в первый раз.
190 3355565
>>55561
Чтобы понять ддд надо внимательно книжку прочитать. ДДД это про взаимодействие архитектора (аналитика) с заказчиком, в целях выработать общее представление о автоматизируемом процессе. Вся суть ддд в универсальном языке, или как в ддд это называется юбиквити лангуаге, который вырабатывается в результате брейншторминга на территории заказчика с его персоналом. Домены это часть этого представления.

Не путай ДДД с луковичными и гексогональными архитетурами. ДДД это не архитектура, которую кодомакак единолично у себя в голове создает. Это средство взаимодействия с заказчиком
191 3355568
>>55565
мимо шел
192 3355576
>>55555
Пишу под эпичным постом
193 3355593
>>55454
>>55446
Какая-то хуйня.

Суть распределённых транзакций в том, чтобы по максимуму их избегать. Распределённые системы и транзакции нихуя разработку не ускоряют, что за хуйня. Это как раз Вася с монолитом джейсонов накидает быстрее.
194 3355606
>>55565
Проблема что весь этот язык не работает. Система типов или модулей вообще может не отражать реальные объекты и процессы. Часто бизнес сущности и процессы имеют эмерджентную природу.

Программисты вообще не должны завязываться на модели бизнеса и тем более общаться с заказчиками. В 100% случаев это приведёт к тому что вместо требований получается "скрытое решение" когда заказчик пытается пропихнуть свои идеи реализации.

Задача разработки это моделирование целевых процессов и их автоматизация. При этом то как это происходит может вообще не исходить из бизнеса.
Если делать по ДДД завод машин мы по Комон лэнгвидж и общению с заказчиками будем проектировать антропоморфных работов с развитым ИИ.
195 3355661
>>55593
Как только у тебя появляется вторая бд, у тебя появляются распределенные транзакции. И ты их никак не избежишь.
в.jpg11 Кб, 466x252
196 3355676
>>55565

> Вся суть ддд в...



ну например.

Но смею заметить, что каждый следующий умник рассказывает про DDD что-то своё.

Один пиздит про агрегаты, другой про ограниченные контексты, третиий про события, четвёртый про MediatR и Automapper Да, мне один долбоёб и правда пытался доказать, что DDD это CQRS, который невозможен без медиатра

Может, хватит уже?
197 3355680
>>55676
Зачем слушать всех если можно эванса открыть и посмотреть. Там в основном вода про менеджмент, а не как писать код
198 3355681
>>55661
Вообще нет. Не всем бизнес операциям нужна атомарность.
199 3355687
>>55680

>Зачем слушать всех



Чтобы понимать о чём они говорят. А говорят разное, но слова одни и те же
200 3355720
>>55661
С чего бы? Наличие необходимости в полной консинстентности данных это проблемы архетуктуры. Ты получается разбил какую-то сущность на разные БД, это ошибка.

Если что-то должно быть сохранено в рамках одной транзакции, то это должно принадлежат одному сервису. Либо ты трясун шизофреник и на самом деле тебе нет нужды производить операцию целиком.
201 3355721
>>55676
Если что-то можно понять неправильно, значит это хуйня.
202 3355760
>>55720
О, вы из яндекс маркета!
203 3355764
>>55760
Чел, ты какую-то хуйню джуновскую пишешь, если ты ещё и автор вот этой хуйни >>55555 - твоя цена это 70к максимум.
Screenshot20250104210147.jpg84 Кб, 1812x941
204 3355766
>>55764
>>55555 (You) - твоя цена это 70к максимум
Ну поплачь ещё.

ДДД это хуйня из под коня и признак долбоеской организации разработки.
205 3355788
>>55766
Ну это неудивительно, я видел достаточно таких долбоёбов которых мы увольняли очень быстро.
206 3355807
>>55788
Тоже не любите ДДД-шников?
207 3355813
Мимопроходил.
Считаю, что ДДД не существует в природе. Каждый понимает под ДДД свое видение разработки, но толком внятно описать его не может. Вообще все эти идеологии, паттерны, методологии, стили и приемы разработки могут называться одинаково, но по факту от проекта к проекту будут представлять из себя разные вещи, а порой и вовсе противоположные по смыслу. Надо приходить на конкретный проект и вникать в него, чтобы понять, что именно там подразумевали под ДДД его авторы. На моем текущем проекте тоже гордо говорят, что у нас ДДД используется, а по сути все ДДД заключается в том, что мы дто, ентити и репозитории кладем не в три папочки, а у каждой сущности есть своя отдельная папочка, где лежат связанные с ней репозитории и ентини. Мне лид затирал, что именно это и есть ДДД по его мнению. А мне в целом похуй, раз это назвали ДДД, то пусть оно и будет так называться у нас на проекте.
208 3356430
Возможность построить «правильную систему с первого раза» — миф. Вместо этого мы сегодня реализуем текущие потребности, а завтра перерабатываем и расширяем систему для реализации новых потребностей. В этом заключается суть итеративной, пошаговой гибкой разработки. Разработка через тестирование, рефакторинг и полученный в результате их применения чистый код обеспечивают работу этой схемы на уровне кода.

Сижу читаю "Чистый код", охуенная книжка
209 3356460
>>56430
Чистый код - это такой сборник разговоров в курилке, где скуфы с 20+ годами опыта обсуждают, как же они заебались. Джунам это непонятно и неактуально.
210 3356571
>>56430

>итеративной, пошаговой гибкой разработки


Только это не делает никто.

Задача.
Необходима машина красного цвета.

1) Мы пока сделали МВП в виде велосипеда
2) знаете времени на переделку нет мы взяли два велосипеда и сварили их.
3) долго думали и в итоге вокруг велосипедов сварили каркас кузова
4) вставили двигатель и кпп. Ручка переключения правда находится за спиной водителя поэтому мы сделали тросик и переключение в стиле мотоциклов
5) спустя долгое время мы все же смогли приделать рулевой механизм от настоящего автомобиля
6) доделали кузов приматав его стяжками.

Как это делают нормальные люди.
1)
1.1) вот рама вашего автомобиля и колеса
1.2) вот кузов
2)
2.1) мы установили двигатель, кпп и рулевое управление
2.2) вот кузов уже проходит финальную полировку
2.3) вот отделка салона
3) мы завершили монтаж кузова на раму
4) завершили отделку салона.

В результате итерации не должно быть готово продукта. Невозможно собрать машину чтобы на каждом этапе на ней можно было ездить.
Также невозможно делать качественный код когда от тебя требуется чтобы можно было уже тыкать.

Гибкость это миф. Система всегда будет расчитана на какие-то границы сверх которых выйти нельзя. Всегда будут фичи которые мы будем делать 3 месяца и не можем показать никакой результат кроме "мы работаем".
Если у вас бизнес меняется каждый месяц, то возможно у вас хуевый бизнес и нет никаких тактических и стратегических планов.

И главное. Дураку пол работы не показывают.
210 3356571
>>56430

>итеративной, пошаговой гибкой разработки


Только это не делает никто.

Задача.
Необходима машина красного цвета.

1) Мы пока сделали МВП в виде велосипеда
2) знаете времени на переделку нет мы взяли два велосипеда и сварили их.
3) долго думали и в итоге вокруг велосипедов сварили каркас кузова
4) вставили двигатель и кпп. Ручка переключения правда находится за спиной водителя поэтому мы сделали тросик и переключение в стиле мотоциклов
5) спустя долгое время мы все же смогли приделать рулевой механизм от настоящего автомобиля
6) доделали кузов приматав его стяжками.

Как это делают нормальные люди.
1)
1.1) вот рама вашего автомобиля и колеса
1.2) вот кузов
2)
2.1) мы установили двигатель, кпп и рулевое управление
2.2) вот кузов уже проходит финальную полировку
2.3) вот отделка салона
3) мы завершили монтаж кузова на раму
4) завершили отделку салона.

В результате итерации не должно быть готово продукта. Невозможно собрать машину чтобы на каждом этапе на ней можно было ездить.
Также невозможно делать качественный код когда от тебя требуется чтобы можно было уже тыкать.

Гибкость это миф. Система всегда будет расчитана на какие-то границы сверх которых выйти нельзя. Всегда будут фичи которые мы будем делать 3 месяца и не можем показать никакой результат кроме "мы работаем".
Если у вас бизнес меняется каждый месяц, то возможно у вас хуевый бизнес и нет никаких тактических и стратегических планов.

И главное. Дураку пол работы не показывают.
211 3356735
>>56571

>знаете времени на переделку нет


это у вас нет. А у нормальных людей берется бумажка на увольнение, на ней жирным пишется "технический долг", бумажкой оборачивается кулак и этим кулаком по ебалу тех, у которых что то там горит

А далее либо время появляется, либо бумажка разворачивается на подпись
212 3356742
>>56735
Бумажка ВСЕГДА разворачивается на подпись. После подписания нанимают тех, кто не будет отказываться делать задачи по непонятным кабану причинам. Кабану похуй, работа и так и так стоит, деньги платятся непонятно за что.
213 3356745
>>56742

> кто не будет отказываться делать задачи по непонятным кабану причинам


тебе то что. ведь не тебе потом трахаться с этим франкенштейном и при этом быть виноватым.
А если причины, как ты говоришь, нипанимат, то и жпо настанет этому проекту (примеров множество), но это же будет не твоя проблема
214 3356750
>>56742
если сложная жизненная ситуация, ну тянешь резину до жпо
но попутно ищешь другую работу
но не стоит так доводить себя. Рецепт успеха прост - всегда будь богатым и красивым.

ну а если без шуток, то когда начинается ебала с техническим долгом и никто этого не понимает, то значит настала пора походить за забором
хотя...там всегда полезно бродить. Это ведь только кажется что "да кому я нужен - вон сколько за забором ходят". Ходят конечно, но не все нормальные.
215 3356755
>>54709

>Я сижу на архетектурной секции и задаю логичный вопрос. Почему сущность сама управляет сменой статусов модели. На что получаю ответ что это же агрегат



Вас шарпистов на собесах ебут такой хуйней? Это даже хуже литкода, ей-богу. Хорошо, что я укатился в Go и у нас на все эти паттерны-хуяттерны кладется хуй. Но зато многопоточку спрашивают всегда и везде.
216 3356763
>>56755
а причем тут вообще шарп к подобным темам.
в любом развитом языке (а не примитиве для написания микросервисов) возникают вопросы архитектуры

По очень простой причине - язык позволяет писать БОЛЬШИЕ проекты.
а удел го - микросервисы.
217 3356774
>>56755

> Хорошо, что я укатился в Go


Ну и за какими ссаными тряпками ты приполз в этот тред?
218 3356778
>>56755
В сишарпе тоже. Это какой-то шиз навсегда застрял в 1995 году, потерялся среди абстрактных фабрик.
219 3356860
>>56571

>Необходима машина красного цвета.


>Мы пока сделали МВП в виде велосипеда



Нахуя? переделывай
220 3356877
>>56755

> Вас шарпистов на собесах ебут такой хуйней?



шарпистов - нет. медиатро-автомапперисты ебут друг-дружку тамими вопросами. Это низшая каста опущеных, с ним запрещено даже джунам и юнити-девам разговаривать
221 3356943
>>56755
Я не про собеседование. Я сумел убедить людей что нужно проводить секцию планирования архетуктуры. Ажно 3ч выделили.
222 3356964
>>56943
Хз о чем ты. Но ты молодец
В чем то убедилт- в менеджеры тебя. И пиздить розгами
223 3356966
>>56964
У нас задача проходит этап
1) оценка разрабом. Очень верхнеуровнево.
2) потом все собираемся на планирование и даём оценку. Также пишем небольшие детали.
ВСЁ задача идёт в спринт.

Я смог убедить всех что для некоторых задач необходимо прям 2-3 дня выделить на архитектуру, продумывание как оно потом может развиваться и заложить это. Ну короче страшное нарушение принципа Аджайл "хуяк хуяк и на демо".
Вот в результате таких предложений родился этап когда разрабы обсуждают результаты проектирования.
224 3357034
>>56966
Иными словами, добавил больше созвонов богу созвонов. Управленец от бога, хуле. Умные люди придумали аджайл, но всегда найдется шиз с окр, которому надо все заранее распланировать на сто лет вперед.
225 3357082
>>57034

>Умные люди придумали аджайл,


И выкинули такие не нужные вещи как
1) архетуктура проекта
2) проектировачное решение
3) планирование проекта
4) документация
5) чёткие требования на разработку
6) критерии приёмки

Аджаил и гибкость миф. Нахуй не нужно иметь возможность каждые 2 недели менять проект. Если заказчик не может нормально сформулировать цели фичи или описать её это сложная и большая проблема, скорее всего он сам не понимает что ему необходимо и нужно не бежать код писать, а разобраться в его ситуации и предложить решение.

Я не понимаю почему мы не должны заложить в проект фичу из роад мапа на год. То что она будет в ноябре не значит что мы не должны ещё в феврале по другому делать фичи с прицелом что в ноябре мы планируем делать то-то.

С началом практики архетуктуры и проектирования мои коллеги сами говорят что им стало проще понимать наши сервисы, какие изменения вносятся, как это влияет на код. Также оказалось очень удобно иметь полную схему классов и сервисного взаимодействия которые я сделал и актуализировал все бизнес процессы в конфле до актуальных.
По итогам мы завели 30 задач на исправление дефектов. Аналитки нашли ошибки в работе системы при анализе диаграмм и схем процессов. QA говорят мне спасибо за наличие полной документации по взаимодействиям сервисов и даже за диаграммы классов и БД.
Даже скорость разработки немного выросла, стабильно 4СП в спринт. Ведь теперь мы при планирование смотрим схемы и архетуктуру и сразу видим некоторые проблемы.

Аджаил не работает когда тебе нужно долго и методично делать крупный проект. Я вообще не вижу никакой необходимости в гибкости, я вижу проблемы с коммуникациях когда аналитик бежит исполнять любые пуки заказчика не пытаясь выяснить у него реальные необходимости бизнеса.
226 3357086
>>57082
Вангую у вас попильный госпроект, от которого заказчик не может отказаться. В условиях конкурентного рынка вас бы уже давно сожрали конкуренты с этими вашими согласованиями согласований.
Проблема в том, что заказчик сам толком не знает, что ему надо. Аналитик - это не боженька, он тоже ошибается. Аджайл позволяет подстраиваться под эти условия, ваша дубовая совковая с запахом НИИ методология - нет.
227 3358324
>>56571

>> 1) Мы пока сделали МВП в виде велосипеда


С нулеовй хуйню сделали.
Могли бы сделать кресло, руль, педали и рычаг переключения, поставить на телегу, которая на этапе MVP толкается "руками", а дальше весь ручной труд автоматизировать, но это сложно, ведь хочется просто насрать в код
228 3358330
>>54709

>> Возложение на него ответственности за управление статусной моделью сущности это нарушение SOLID.



Чисто эпирически, я вывел что класть в сущность статусную модель это путь в ад, если тебе кажется флоу будет примитвным на 3 статуса, тебе пизда, потому что дальше добавятся статусы и еще дохуя условий\прав для смены этих статусов.

Надо сразу пилить флоу-менеджер который берет сущность и сам разруливает ее статус, в нем же и аудит пишется (сервисом аудита)

Для меня ДДД это возможность выделить сущности на этапе проектирования, чтобы не ебаться потом самому сочинять все это.
17358443715380.jpg425 Кб, 1080x948
229 3358402
>>58330

>флоу-менеджер



Вы встречаете в коде класс GenericEntityInteractionDomainFlowManagerServiceBase

Ваши действия?
230 3358411
>>58402
расчехляю дебагер
231 3358491
>>58402
Переименовываю в AbstractGenericEntityInteractionDomainFlowManagerServiceBaseBean
Добавляю в резюме строку Solution Architect
232 3358655
>>58402
Кстати, интересный вопрос, почему существенная часть любителей этой наебки для гоев не смогли усвоить из нее самое важное - что все это дерьмо надо нормально называть?
133.jpg34 Кб, 512x354
233 3358844
>>47352 (OP)
Посоветуйте лучшую книгу по ООП и паттернам с примерами на языке Си-решетка. Чтоб прям преисполниться после изучения. Можно и не книгу, но вряд ли лучше книг что-то есть.
234 3358854
>>55766

>пик


Пиздец конечно. Я-то думал что хоть тырпрайзные джавошарписты зарабатывают нормальные деньги, а нет. Даже в этой сфере работают за три куска. А еще кто-то собрался в РФ индусов завозить, какой индус со знанием ингриша пойдет работать за такие копейки.
235 3358933
>>58844

>книгу по ООП и паттернам


Ты опоздал на 30 лет. В 2025 году IService возвращает лист дтошек, а синглтон - один из вариантов регистрации в DI.
236 3358992
>>58844
Принципы, паттерны и методики гибкой разработки на языке C#. — Символ-Плюс, 2011.

>>58933
Пчел, если ты не понимаешь паттерны - это не означает, что их не понимают другие. Нормальный код он всегда немножечко ооп, но без этого блядства и разгула, который раньше делали
237 3358996
>>58992

>но без этого блядства и разгула, который раньше делали


Так то что ты слишком тупой чтобы понимать зачем так делают твоя проблема.

Невозможно легко сделать сложные вещи.
238 3359005
>>58996

> Невозможно легко сделать сложные вещи.



а если пару раз подумать - возможно.

Сначала делаешь базу, а остальное всё прикладывается как по волшебству.

Сначала делаешь базу:
Выкидываешь автомаппер - код становится менее хрупким и лучше читается.
Выкидываешь MediatR - код становится устойчивым и однонаправленным.
Выкидываешь все комментарии нахуй, - и как-то просторнее и проще работать становится.

Потом как по волшебству код вокруг начинает писаться проще и быстрее
239 3359007
>>58996

> понимать зачем так делают



Потом выкидываешь DDD и начинаешь писать "вот как есть". И даже как-то стыдно становится, что 5 лет на хуйню потратил
240 3359035
>>58992

>2011


Ты ебанутый?
241 3359038
>>59035
Какие-то новые паттерны появились с тех пор?
242 3359058
>>59035
Ебанашка, это книга Дяди Боба, она не стареет
243 3359060
>>59058
Да, вышла устаревшей, куда уж дальше стареть.
244 3359075
>>59060

Ну хули, учи новые паттерны. По новой книжке. А лучше в тик-токе
245 3359091
>>59058

>это книга Дяди Боба


т.е. вдвойне кал.
246 3359182
>>59091
Есть какие-то причины хейтить книжки дяди боба, или ты ебало завалишь и помолчишь?
248 3359236
>>59198

Если ты не читал обсуждаемую книгу и сказать тебе нечего - то лучше ебало всё-таки завалить
249 3359248
>>59198

>хабр


Спасибо мне мнение людей даже без профильного образования по теме нахуй не упало.

Это базовая база. Мнение людей без образования в сфере о которой они пишут вообще не важно. Особенно когда очередной 2летний сенька пытается критиковать профессора университета и просто человека с опытом больше чем эта сопля на свете жила.
250 3359356
>>59248
У Мартина опыт в инфоцыганстве, в программировании опыта нет. Ты сам себя обоссал, джунишка.
251 3359367
>>59356
Мартин про себя пишет что 50 лет попыта. Трудовую конечно не показывает..
252 3359377
>>59198
если долбоебы не понимают что "КАЖДОЙ ЗАДАЧЕ - СВОЙ ИНСТРУМЕНТ", то это проблема долбоебов.
Если в приоритете стоит перфоманс, то только имбецил будет пихать паттерны ради паттернов.
Однако чаще всего во главе угла стоит ясность и расширяемость решения. И там преждевременная оптимизация зло - банально все может быть выброшено или переделано.

твиттер был написан на руби с рельсами. результат все знают.
вк был на похапэ написан. результат все знают

а долбоебы могут сколько угодно писать оптимизированные быстрые решения, но только вот рынку они могут быть уже не нужны ибо "дорога ложка к обеду"
253 3359380
>>59377

>твиттер был написан на руби с рельсами. результат все знают.


>вк был на похапэ написан. результат все знают


А потом они были с 0 полностью переписаны.
254 3359396
>>59380

>А потом они были с 0 полностью переписаны.


Ты верно заметил - ПОТОМ!!!!! только сначала оно выстрелило. Получило признание и хайлоад, что понадобилось что то с этим делать.

Конечно всякие там паттерны нужно изучать через призму используемого ЯП, а также не забывать что паттерны это не только организация кода, а намного больше для коммуникации.
Но основные принципы написания расширяемого кода все же следует соблюдать - иначе вместо расширяемости будешь постоянно переписывать. А если еще и оптимизировать заранее, то может внуки проект и допишут....только кому он нужен будет уже хз.
255 3359404
>>59396
У тебя ошибка восприятия. Были десятки и сотни клонов и других альтернатив. Важнее не быстро выйти на рынок, а убедить людей что пользоваться надо твоей залупой, а не конкурента.

Тем более что ты понятия не имеешь про качество кода этих систем и писали их не говношлепы типо тебя, а как раз гики которые любили дрочить на ассемблерные вставки.
256 3359411
>>59404

>а убедить людей что пользоваться надо твоей залупой, а не конкурента.


Это уже дела маркетолухов. У программиста же другая задача - БЫСТРО РОЖАТЬ ФИЧИ которые нужны.
потому что ОТСУТСТВИЕ ФИЧИ как то не работает как привлекающий фактор.
и маркетолухам просто нечем убеждать людей "у нас лучше потому что у нас вот".

Так что скорость разработки проекта важнее скорости выполнения кода.

>не имеешь про качество кода этих систем


с этим не спорю, но все же RoR задавал архитектуру, да такую что щас куча фреймворков ее стырили себе (и асп.нет) не исключение.
там не "щас мы набросаем на батниках проект, на крон повесим и пойдем бухать".
scale1200.jpg158 Кб, 1102x1200
257 3359636
Сап двач, ищу друга/наставника/ментора/кумира , который поможет мне в изучение данного языка. Прошу, обьявись :D
кун 22 лвл tg : @linkijis
258 3359659
У вас ошибка в литературе по играм - там одно юнити говно вместо моногейма. Исправьте.
259 3359660
>>59636
ты же пидор, да? не отрицай, ты пидор
260 3359670
>>59636
Сенсей-сама?
261 3359682
>>59411

> БЫСТРО РОЖАТЬ ФИЧИ



Справедливости ради, быстро рожать фичи в аду фабрик абстрактных билдеров стратегий тоже сложно.

Но чистый код - это, напоминаю, не про то, чтобы адок создавать, а скорее наоборот
262 3359704
>>59682
В рельсах нет абстрактных фабрик билдеров. Рельсы с точки зрения аспнетов это один сплошной антипаттерн. Все что в пыхе жаве дотнете считается антипаттерном в рельсах является паттерном и наоборот. Монки патчинг, наследование, названия методов из одного слова, генерация кода в рантайме и пр
263 3359720
>>59704
С каких пор наследование это антипаттерн?
264 3359723
>>59720
С тех пор, как стало принято наследоваться не более одного раза от абстрактного класса.
265 3359742
>>59704

>наследование


>антипаттерн



С появлением Automapper наследование стало ненужно.
266 3359768
>>56571
Как-бэ эт совсем скорапчены процессы.
Обычно такие вы хотя бы какую-то роадмапу делаете.
И итерации бьются по этой роадмапе.
Так и заказчик, в широком смысле, и команда понимают что ожидается когда.
И выходит таки что-то в духе того что этот >>58324 анон описал, но при этом - все видят, что процесс идет и если команда не проебывается - доверие есть, т.к. идут по этой роадмапе. А если в процессе - заказчик решает что ему надо чтобы красная машина еще в подводную лодку превращалась - есть возможность свернуть рано, а не: БЛЯ, ИДИТЕ НАХУЙ, МЫ МАШИНУ КРАССНУЮ ДЕЛАЛИ, РЯЯЯЯ, РЯЯЯЯЯЯЯЯЯ. Плюс - если шли нормально - то и вопросов будет мало, почему теперь добавить торпеды и погружение - занимает столько времени.

Бизнесу таки в первую очередь не скорость важна, а предсказуемость. Оба варианта которые ты написал - непредсказуемы нихуя. Не важно сколько они времени занимают и что там по фичам.
267 3359786

>наследование


>антипаттерн


Да вообще все антипаттерн. Что в мозгу вкатунца не умещается, то значит и не нужно. Хуяк хуяк и погнали на продакшн, главное что за спринт успели и показали результаты. Я один хуй через 2 года уволиться планирую, а вы ебитесь потом сами.
268 3359791
>>59768

>Бизнесу таки в первую очередь не скорость важна, а предсказуемость


Но сектанты гибкой разработки и аджаила свято верят что необходимо как можно быстрее показать результат чтобы бизнес мог внести правки и оценить промежуточные работы.

Все идеи гибкой разработки крутятся вокруг идеи что мы делаем хуй знает что, а проблема что с уровня атомарных фич мы перешли на попытки в таком стиле реализовать целые компоненты системы.
В целом лучше не браться за работу у людей которые не понимают что хотят.

Я вот ремонт делал. Нанял бригаду и дал им 200 страниц планов, схем, чертежей, списки материалов и номера красок, схему электрики и растоновки мебели. И как же было тяжело их отучить звать меня смотреть или спросить что-то, каждый раз я им говорил что видел конечный результат на рендерах, я видел образцы всех красок и материалов. Вот чертежи и схемы, делайте все по ним. Не надо менять звать и спрашивать где ставить розетки, выключатели и какую краску купить.
269 3359828
>>59720
С тех пор как стало понятно, что наследование - это сложно, и в реальности - тебе чаще нужен только интерфейс, а не вся эта вот фигня с наследованием.
270 3359835
>>59791
Так в реальности разработчикам никто не дает 200 страниц каких-то схем и прочего.
Тебе говорят: Надо автоматизировать завод.
Че автоматизировать? Да хз, неэффективно чет. Давайте, автоматизируйте.
А продажник такой: Ой, конечно, все сделам, дайте деняк только!
И тут две ветки.
1. В конторе все плохо с процессами. Разработчики по своему разумению что-то там изучают и что-то делают. В результате - результат непредсказуем от слова совсем.
2. Процессы таки есть. Но неясности все еще дохуя. Начинается попытка разобраться, что ж там таки надо автоматизировать. Сначала аудит процессов предприятия. Выявления мест узких. Выяснение с разработчиками - а что в этом мы можем таки сделать. Планирование. И т.д.

В реальности - не бывает практически такого, чтобы заказчик ПО пришел такой: Вот вам все что нужно для работы - работайте. Может быть в военке разве что.
271 3359899
>>59835

>Так в реальности разработчикам никто не дает 200 страниц каких-то схем и прочего.


>Тебе говорят: Надо автоматизировать завод.


Раньше давали. Раньше прикинь делали документацию по процессам, диаграммы взаимодействия. Потом архитекторы писали кучу схем, документации технического толка, думали какие технологии и ЯЗЫК выбрать. Потом писалалось проектировачное решение, схемы классов, модулей. Потом все это разбивали на задаче и планировали трудозатраты.
И только спустя 1-2 месяца разрабы писали код по уже готовой системе.

Естественно эти процессы могли идти параллельно и пока программисты набирают код, архитекторы пишут новые части системы.
Сейчас за обосаные 300к от тебя надо быть разработчиком, архитектором, техписцом, аналитиком и ещё немножко разбираться в бизнес области. Отсюда и проблемы когда карьерный путь разработчика почему-то идёт в менеджеры, ну просто всех уровней технических специалистов выше старшего разраба просто не существует.
left.jpg233 Кб, 960x1280
272 3359943
>>59828

>С тех пор как стало понятно, что наследование - это сложно



Ты из тех категоричных сеньоров-два-года? Твой способ переиспользовать код ОБЪЕКТИВНО ЛУЧШЕ? Ебать, я угораю с вас, бледей
273 3360009
>>59943
Переиспользованием "драгоценного" кода озабочены джунишки-короткие-штанишки. Реальная польза от переиспользования есть только в UI компонентах, да и там если логику от представления плохо отделить, то начинается сильно связанный говнокод - aka наследование.
274 3360018
>>60009

Ну, то есть, ты просто копи-пастишь, а корректный код не осилил и осуждаешь
275 3360037
>>60009
Причем тут связаность и наследование. Ты вообще понимаешь термины которые пишешь?

Вот тебе христоматийный пример наследования.
У нас есть разные виды отпусков, нам необходимо чтобы в целом их логика была довольно общей, да и структура. Там незначительно отличаются возможные даты, логика вычисления количества дней.

Поэтому мы создаём абстрактный класс отпуска, от него будут наследоваться все сущности разных видов отпусков.
Также создаём абстрактный класс операции который реализует общую логику и через абстрактные методы требует реализовать специфичные вещи.

Теперь опиши мне пожалуйста свою систему.
276 3360038
>>60018
Коректного говнокода не бывает. Все многоуровневое наследование сводится к микроменеджменту копипасты - результатом чего становится запутывание кода, которое с каждым потомком становится все запутаннее.

Всегда когда дерево наследований, то по нему бегаешь и думаешь как изменение отразится на других элементах этого дерева. А нужно ли, чтобы столько кода было зависимым? У него реально одинаковые причины для изменений? Или ты просто занимаешься бесконечным рефакторингом потому что сам все запутал?

Например для одного потомка тебе стало нужно одно поведение метода базового класса, а для другого другое. Ведь ты же не будешь создавать похожие методы у базового класса при необходимости, а отрефакторишь еще одним слоем наследования?

Если у тебя есть действительно полезный большой кусок логики, то он выностится в сервис и используется через композицию.

Когда у тебя композиция, то ты в любом элементе можешь заменить конкретный сервис на другую реализацию и это никак не отразится на других элементах композиции, которые зависят от того же интерфейса.
277 3360043
>>60037

>У нас есть разные виды отпусков, нам необходимо чтобы в целом их логика была довольно общей, да и структура. Там незначительно отличаются возможные даты, логика вычисления количества дней.


Делаешь один класс, в него передаешь стратегию расчета. Нахуй тебе наследоваться тут?
278 3360046
>>60038

>Например для одного потомка тебе стало нужно одно поведение метода базового класса, а для другого другое. Ведь ты же не будешь создавать похожие методы у базового класса при необходимости, а отрефакторишь еще одним слоем наследования?


Даже не совсем так. Тут ты можешь еще поменять реализации этого метода у самих потомков. Но у потомков могут быть свои потомки которые захотят базовую реализацию. или другие методы будут требовать базовую реализацию. метода. Назуя такие головоломки...
279 3360059
>>60046
Вы оба несёте какую-то хуйню. Не могут потомки требовать разной базовой логики своего предка иначе у тебя в предка протеает специфичная логика.

У меня ощущение что вы просто не понимаете как и для чего используется наследование и как выносят специфичную логику и базовую общую.
Ну или вы те шизофреники из-за которых в С# было решено отказаться от множественного наследования. Я такое видел в С++ когда люди Кошку от Транспорт и Животное наследуют потому что надо логику движения добавить.
280 3360064
>>60038

Не перебарщивай просто и норм будет. Если тебя заебали с глубоким наследованием - это не причина хейтить наследование в общем случае.

Для каждого инструмента есть своё место (кроме Automapper, это говно из жопы).
281 3360065
>>60037

>когда настолько боишься скопипастить код, что даже в простых задачах высираешь иерархии насследования

282 3360067
>>60059

>Я такое видел в С++ когда люди Кошку от Транспорт и Животное наследуют потому что надо логику движения добавить.



Как же вы заебали со своими реалистичными примерами
283 3360069
>>60065
нахуя тебе иерархии? глубоко не наследуйся и не еби мозги
284 3360074
>>60069
Спроси это у шиза, который для расчета отпусков собрался писать иерархию наследования.
285 3360076
>>60069
Ясно. Теперь мы перешли от наследования к наследованию на пол шишечки от абстрактного хуя..
286 3360078
>>60076
А потом приходит сенька с улицы и спрашивает почему тут final, что за самомнение у писавшего...
287 3360081
>>60078
В сишорпе sealed

фикс
288 3360095
>>60081
по хорошему все должно быть по дефолту sealed
289 3360104
>>60074

>собрался писать иерархию наследования



Вроде он написал, и у него всё норм. Это ты кривишь ебало от слова наследование без какой-либо мотивации.

Это как если сказать ФУНКЦИИ ГОВНО, ИХ НЕЛЬЗЯ ПИСАТЬ.

Еще раз тебе лупню объясняю. Читай книжки про разные подходы программирования, бери самое адекватное из них.

Хабр не читай, там инфоцыгане категоричные срут своими "ПОЧЕМУ ООП БЕЗНАЖЁЖНО УСТАРЕЛО И НУЖНО ПЕРЕХОДИТЬ НА АОП"
290 3360144
>>60104
Так а ты-то можешь кейс привести, кроме UI-элементов для библиотеки GUI, где глубокое наследование не будет говном-то?

Я вот могу привести кучу случаев когда обосрамсы из-за этого или говнодизайн. Потому что я сам в бытность джуном-мидлом ну очень сильно любил наследование.
291 3360152
>>60144

>кроме UI-элементов для библиотеки GUI


так а чего ты сразу то так.
видимо мой урок в прошлых тредах усвоили
так ответ тот же - КАЖДОЙ ЗАДАЧЕ СВОЙ ИНСТРУМЕНТ (подход)

причем этот гуи может быть и компонентный подход к асп.нет (примерная аналогия виджеты)
292 3360155
>>60095
По хорошему за sealed в коде надо увольнять
293 3360160
>>60155
Смотря что пишем. Если его можно убрать, то вполне себе. Даже полезно потому что заставляет задуматься, а почему кто-то решил что его нельзя наследовать.
Но вот за такую хуйню без чёткой необходимости в библиотеке надо бить по голове.
294 3360161
>>60144

> Потому что я сам в бытность джуном-мидлом ну очень сильно любил наследование.



то есть, ты сам долбоёб, и на своём примере всех осуждаешь. А как ты понял, что бы перестал быть джуном-мидлом?

Сам так решил или тебя короновали?
295 3360181
>>60152
Так я и не спорю что есть таки места, где наследование ОК.
А есть места, где и все статик-классами все ебануть ОК.
А где-то и синлтон классический не хуже будет чем DI'ешный.
А еще ансейфом шлифануть иногда тоже бывает неплохо.
А когда-то и лучше будет ручками SQL запрос написать, вместо того чтобы на ОРМ полагаться.
Иногда и воскрешать объекты - не такая плохая практика.
А если дальше - переписать все на си или фортран - тоже может быть хорошей идеей иногда, срсли.

Только вот как-бэ. Если мы говорим про кейсы как тут >>60037 оно там нахуй не уперлось.
А дальше начинается уже включаться реальная практика. И мы видим, что в обычном крудостроении и формошлепстве, которым 99,(9)% сидящих тута занимаются - оно нахуй не уперлось, а проблем от него в конечном итоге будет больше, чем сразу без него.
Не, ну я понимаю, кому-то надо чтобы понять - собрать самому все грабли.

>>60161
Твою маму спросил, няша.
296 3360196
>>60160

> Даже полезно потому что заставляет задуматься, а почему кто-то решил что его нельзя наследовать.



В "своём" коде нет технических причин, почему класс нельзя наследовать. В библиотечном - другое дело, там это нужно чтобы пользователи инкапсуляцию не поломали.

я все классы помечаю как sealed, так код читается быстрее.
297 3360200
>>59720
Лет 20 уже. Наследование часто сильно всё усложняет, когда у тебя куски реализации одного и того же раскиданы по куче мест, а из-за переопределений далеко не всегда очевидно, какой конкретно метод вызывается.
Рекомендуется вместо наследования использовать композицию.
298 3360202
>>59742
Аутомаппер зло и не нужен. Лучше лишний раз написать маппинги руками, чем огребать из-за всей этой неочевидной магии.
Всё начинается просто, когда у тебя почти одинаковые классы друг на друга замапленны. Потом ты из нескольких объектов один собираешь. Затем правила всё усложняются, а в итоге у тебя прямо в конфигурации маппингов куча бизнес-логики, обращение к микросервису и запрос в БД.
299 3360206
Препод ебет мозги, что с# это панацея от всего
300 3360207
>>60200

>куски реализации одного и того же раскиданы по куче мест,


Ещё раз. То что ты не можешь нормально спроектровать систему твоя проблема.

Композиция не может быть заменой наследования потому что они выражают абсолютно разные понятия. Ты бы это знал если бы хотя бы пытался получить нормальное образование по ИТ.

Композиция это "состоит из"
Наследование это "является этим"
Ты не можешь заметить одно другим.
301 3360221
>>60207

>еще раз


Дохуя Высотский? Эх раз да и еще раз..

Сам ты не разбираешься. Сейчас же время дивесити. Хочешь быть уткой - просто крякай. Например голенг тот самый диверсити язык. А жабошарпы с номинальной типизацией это устаревщие традици с генеалогическими древами, где вырожденцы хвалятся тем, что они потомки князей, а по факту бухают и ебутся со шлюхами как простые работяги. Только бухло подороже и шлюхи послаще...
302 3360222
>>60221
Если ты не понял то нихуя уже не очевидно что многоуровневое наследование нужно для написания сложных вещей. Кубер написан без этих наследований.

Наледование просто притащили вместе с номинальной типизацией как инородную хуйню в программирование, а как с толком использовать это инфу не придумали.

Пролезать в интерфейсы можно без наследования и явной имплементации. Делегировать поведение можно без наследования, через композицию.
303 3360224
Закиньте это в раздел игры
https://drive.google.com/file/d/1-DV7IA1pD6jd7OMAxhEDQdlQmW9Y913K/view

Это доки по игре на моногейме с очень подробным описанием кода на C#.
Сама игра https://icefish-software.itch.io/arid-arnold
304 3360234
>>60207

>>куски реализации одного и того же раскиданы по куче мест,


>Ещё раз. То что ты не можешь нормально спроектровать систему твоя проблема.


Я могу нормально спроектировать систему без наследования. Занимаюсь этим уже много лет, кучу всего написал.

>Композиция не может быть заменой наследования потому что они выражают абсолютно разные понятия. Ты бы это знал если бы хотя бы пытался получить нормальное образование по ИТ.


У меня степень магистра, чувак. Я в универе успел пописать языках на 15, и ни в одном из них отказ от использования наследования (там, где оно есть) ничего не усложняет.

>Композиция это "состоит из"


>Наследование это "является этим"


>Ты не можешь заметить одно другим.


Является -- это реализация интерфейса. В случае наследования это зачастую совсем не работает. Как пример -- напиши мне иерархию из параллелограмма, прямоугольника, ромба и квадрата с конструкторами с заданием сторон/углов и, к примеру, свойством возвращающим площадь. И ты сразу поймёшь, что наследование -- это совсем не "является".
305 3360263
>>60222

>Делегировать поведение можно без наследования, через композицию


Причём тут делегирование поведения и наследование. Что за хуйню ты блять несешь.
306 3360266
>>60202

>Аутомаппер зло и не нужен.



По сути, ручное присваивание это смердящий ЗАПАХ КОДА и оно должно быть запрещено, так же как вызов NEW.

По сути, согласно правилу бинарных зависимостей, в конструкторе должно быть только 2 зависимости, IMapper и IMediator.
307 3360269
>>60266
Ты ебанулся.
308 3360275
>>60266

>IMediator


Мы вам перезвоним.
{A46DB27E-C0F5-4A6E-B963-EAE7CC8070E7}.png138 Кб, 931x960
309 3360276
>>60207
Окей.
Ты можешь спроектировать.
Давай, объясняй на пальцах, от кого я должен наследоваться?
311 3360298
Хоть и оффтоп, но как же меня заебали такие аргументы уровня: "20 лет пишу на C#/.NET и ни разу не понадобилось X". Это способ сказать что без X можно жить или способ задавить авторитетом? Постоянно такие высеры вижу в комментах на Reddit в r/csharp и r/dotnet.

>>60234

>Я в универе успел пописать языках на 15


Это не аргумент. Хоть я сейчас пишу в основном только на C#, я тоже могу насчитать ещё 5 языков на которых я писал, но это не значит что я их знаю. Вон как я выше написал, кто-то и по 20 лет пишет на C# никогда не использовать некоторые его фичи, а потом используют это как аргумент своей правоте.

мимо бомбануло ещё с комментов вчерашнего поста на Reddit
312 3360330
>>59899

>Сейчас за обосаные 300к от тебя надо быть разработчиком, архитектором, техписцом, аналитиком и ещё немножко разбираться в бизнес области


Буквально суть моей работы. У нас и тестеры немного системные аналитики и разбираются в бизнесе, короче весело живем.
313 3360331
>>60266
На днях мидл пришел, тоже говорил что медиатр говно, не ответил нормально почти ни на один вопрос, это ты был?

Кстати почему медитр говно? Ты же буквально в один файл кладешь запрос+хэндлер. А в вызове явно указан запрос и все это ищется использованием по ссылкам.

Немного сложнее становится только когда речь про нотификации заходит, но такие фичи никто не юзает почти.
314 3360334
>>60276
Даже если не использовать ECS в реальном проекте будут компоненты использоваться, в один класс Unit будут добавлены 2-3 компонента - Attack, Cast и возможно HP.

То есть опять композиция вместо наследования. Игры кстати посложнее крадошлепства в плане логики, и как раз там не используют такие сложные иерархии.
315 3360335
>>60298
А кто такой "фичей" как наследование не пользовался в языке никогда? Наоборот этого в каждом легасном проекте как говна за баней.
316 3360357
>>60276

> от кого я должен наследоваться



От NPC, ясен хуй, ты же предыдущих двоих NPC от NPC унаследовал
317 3360371
>>60331

>Кстати почему медитр говно?



Потому что он никаких проблем не решает

> Ты же буквально в один файл кладешь запрос+хэндлер



А какая проблема-то была?
318 3360381
>>60331
Почему не инжектят IServiceProvider?
Почему не кладут интерфейс и реализацию в один файл?

Я в частности не люблю медиатр, потому что с дженериками заебался. И навигация по коду как в болоте
319 3360385
>>60381

> Почему не инжектят IServiceProvider?


Почему? Я инжекчу в фабрики
320 3360398
>>60381

>Почему не кладут интерфейс и реализацию в один файл?


Я кладу. Я бы и без интерфейсов обошелся если честно, они же тоже никакую проблему не решают, если у тебя только один класс который его реализует (и в 90% так и есть)

Так что и медиатр не нужен, и интерфейсы не нужны. Кайфово. Автомаппер все проблемы решает.
321 3360408
>>60398
как твой автомаппер решит проблему тестирования если ты уберешь интерфейсы?
322 3360425
>>60385

>Почему? Я инжекчу в фабрики


Ну логично. Но я к тому, что инжектить медиатр в контроллеры или сервисы это примерно такое же самое, что и инжектить туда IServiceProvider.

Это значит терять контроль над зависимостями, а это ну такое себе.
323 3360469
>>60357
Но мы ж получим дублирование логики...
324 3360484
>>60408
Предприятий слинялая пожуйте задаривает пятерочною
325 3360485
>>60469
Не слушай долбоёбов. У тебя проблема в том, что ты написал псевдокод и нельзя сказать решение в общем случае. Если у тебя есть общий интерфейс для всех NPC, реализация которого возможна под все типы NPC, то добавляй уровень абстракции и делай так, чтобы путём композиции можно было объединить ваириора и мага.
326 3360531
>>60408
А зачем мне для тестов ложить интерфейс и реализацию в разные файлы? То-то же.
327 3360545
>>60531

>А зачем мне для тестов ложить интерфейс и реализацию в разные файлы?



Ну ты же файл тестируешь
328 3360572
>>60298
Я это не пытаюсь авторитетом задавить, я это сказал исключительно на попытку выставить меня новичком.

В принципе ты прав, но не в данном случае. Меня в том же универе учили ООП, вся эта поебень с "является", "уточнение", "подмножество" и вымученными примерами сущностей человек - студент, человек - препод с методами прочитатьЛекцию() и сдатьЗачёт(). Я вполне могу и с наследованием систему спроектировать, но сознательно выбираю проектировать без наследования.
Я ещё и стараюсь, чтобы классы с логикой не имели состояния, чтобы не ебаться с лайфскоупом и тред сэйфти.
329 3360575
>>60531
Вопрос был не про класс и интерфейс в одном файле, а про наличие интерфейсов вообще.
Как ты класс в юнит тесте мокать будешь? Там вызовы методов можно замокать только если они виртуальные, а это большая редкость.
330 3360576
>>60572

>поебень с "является", "уточнение", "подмножество" и вымученными примерами сущностей человек - студент, человек - препод с методами прочитатьЛекцию() и сдатьЗачёт().


Ну значит ты просто тупой. Это не вымученые примеры, ожидается чтобы даже дебил понял, но ты вот не смог.

СдатьЗачет методом класса быть не может это сложный процесс. Метод класса Студент это ДатьЗачетку(), ПолучитьУчебник().

Ты не понимаешь просто что твои попытки не использовать наследование приводят к говно коду который невозможно будет рефакторить. А не можешь понять потому что тупой и не осилил понять и осознать зачем и когда применяется тот или иной подход. Тебе нравится делать что-то, ты и делаешь это везде и похуй что ты гвозди отверткой забиваешь.

.NET целиком построен на сложном и развесистом наследование, использование интерфейсов это наследование(интерфейсы это абстрактные классы с точки зрения приложения), любой стандартный класс это потом 3-5 классов. Весь LINQ и система коллекций это наследование и правильное использование нужных типов.
Абсолютно все крупные приложения что ты можешь вообразить содержать огромные схемы классов и имеют глубину наследования вплоть до 10 уровней.
Даже банальная авторегистрация зависимостей или их вызов основаны на наследование и получение потомков.
331 3360592
>>60576

>имеют глубину наследования вплоть до 10 уровней.



А некоторые и по 3 конфигурации автомаппера!
332 3360601
Такой вопрос.
Когда последний раз вы использовали goto?
333 3360610
>>60601
В laba1.cs.
334 3360638
>>60576
Ты прямо как Петрович с завода, считающий что никто кроме тебя не понимает как гайки крутить. Ух все тупые..

Да. Наследование и композиция это два разных инструмента. Но тут в треде усираются что наследование нужно для переиспользования кода. Как раз для переиспользования наследование не нужно, а нужна композиция. Все паттерны про это.
Наследование остается для работы полиморфизма. Просто так жабошарпы да и много другие языки работают, что нужно наследоваться чтобы работал полиморфизм для сабкласов.
335 3360642
>>60638
А там где в паттернах используется наследование, оно там не для переиспользования кода, а именно для того чтобы принцип подстановки Лисков работал. Например простой паттерн декоратор.
336 3360643
>>60601
В пет проекте, 16.12.2024. Ебало в норме, мать жива.

Вообще я заметил что я пользовался им раз 20, зачастую для скипа какого-то кода (где из разных мест метода нужно прыгнуть в его конец где нужно выполнить ещё какой-то код (что-то типа early exit, но только в следующую часть метода)). Где-то можно было обойтись (например, на методы разделить и т.д.). Я нейтрально отношусь к goto, так что, хочу - использую, хочу - не использую (единственное "правило" - прыжки только вперед метода).
337 3360680
>>60643
Единственное правило - с ним лучше чем без него
И плевать куда прыгать
338 3360747
>>60610
Goto добавляет выразительности. Стараюсь использовать его как можно чаще.
339 3360757
>>60601
В 2020-м. Но там язык был такой, что ветвление или циклы можно было организовать только в виде IF <cond> GOTO <label> и никак иначе.
В шарпе только один раз в switch-е и то по приколу, чтобы товарища подъебнуть.
17367901432000.jpg453 Кб, 1080x1080
340 3361544
Программировал весь день на C#.

Всё охуенно
341 3361547
>>61544
Программировать любой дурак может
Ты попробуй деньги заработать
342 3361573
>>60576

>.NET целиком построен на сложном и развесистом наследование, использование интерфейсов это наследование(интерфейсы это абстрактные классы с точки зрения приложения),


Нет. У интерфейсов нет реализаций, это ключевое отличие.

>любой стандартный класс это потом 3-5 классов. Весь LINQ и система коллекций это наследование и правильное использование нужных типов.


Linq - это методы расширения, повешенные на IEnumerable<T>, никакого наследования там нет.

>Даже банальная авторегистрация зависимостей или их вызов основаны на наследование и получение потомков.


Реализация наследованием не является.

Итак, где иерархия из параллелограмма, прямоугольника, ромба и квадрата?
Не можешь в множественное наследование? Ну давай хотя бы квадрат и прямоугольник.
343 3361591
>>61573

>Нет. У интерфейсов нет реализаций, это ключевое отличие.


Default interface members?

>Linq - это методы расширения, повешенные на IEnumerable<T>, никакого наследования там нет.


Мне кажется, что он говорит про внутренности реализации.

>Реализация наследованием не является.


А я бы сказал что это ограниченная форма наследования.
344 3361596
>>61573

>Нет. У интерфейсов нет реализаций, это ключевое отличие


Во-первых, есть. Во-вторых, интерфейс это не изобретение С# а паттерн такой. В других языках он буквально делается через абстрактные классы.

Конкретно в С# это сахар и реализации философии множественого наследования только для поведения, а не структуры. Они выделены отдельно чтобы запретить множественое наследование классов. В IL коде нет никакой разницы нследовал ты абстрактный класс или интерфейс.
345 3361628
>>61591

>Default interface members?


Это не наследование. Можешь рефлексией проверить, там у объекта не будет этого метода.

>А я бы сказал что это ограниченная форма наследования.


Моя конкретная претензия к наследованию заключается в возможности переопределения методов и свойств, что ещё ухудшается тем, что в шарпе они бывают виртуальные и нет.

>>61596

>Во-вторых, интерфейс это не изобретение С# а паттерн такой. В других языках он буквально делается через абстрактные классы.


В других это в каких? В крестах, лол? Это не пример для подражания.

>Конкретно в С# это сахар и реализации философии множественого наследования только для поведения, а не структуры.


См. выше мою претензию к наследованию.
0MHc4PhK-Hc.jpg169 Кб, 1431x955
346 3361632
Q! Хочу написать десктопную программку для Windows компов. Опыта в C# особо не имею, сделал на dotnet 9.0 winforms, скинул на соседний комп для проверки, а он требует установки windowsdesktop-runtime-9. Можно ли сделать так, чтобы программа использовала только установленный фреймворк? На всех компах точно есть 3.5 и 4.0.
изображение.png391 Кб, 1998x1880
347 3361667
>>61632

Ты писал приложение на современном кроссплатформенном дотнет-коре, а требуется запускать его на дотнет-фреймворке-для-винды пятнадцатиледней давности.

3.5 фреймворк поддерживается до 2029 года. В принципе, ты можешь попробовать под него переписать, но будет скорее всего сложно, что-то сравнимое с попытками работать на windows-xp.

Так же рассмотри вариант обновить фреймворк до 4.8 на целевых машинах. Сама разработка будет значительно проще. Или у тебя ограничения?

https://en.wikipedia.org/wiki/.NET_Framework_version_history
горделивая поза больного шизофренией.jpg103 Кб, 453x604
348 3361668
>>61628

>См. выше мою претензию к наследованию.

349 3361714
>>61667
Нет, никаких ограничений. Просто хотел, чтобы программка запускалась везде без дополнительных танцев с установками. До версии 4.8 обновить без проблем.
350 3361764
>>61632
Возможно, тебе подойдет self-contained публикация приложения - тогда совсем не будешь зависеть от установленных на целевой машине фреймворков.
Но вырастет размер приложения, так как в релиз будут включены все зависимости и исполняемая среда.
351 3361772
>>61764
Понял, не судьба значит. Я тогда уж на питончике наваяю с pyinstaller. Плюсом кроссплатформенность появится.
352 3361811
>>61772
Че ты как баба со своими окошками. Делай CLI и не еби мозг.
353 3361823
>>61772

>pyinstaller



Пробовал я этот ваш pyinstaller, заебался, так ничего и не заработало
354 3362046
>>61772

>Плюсом кроссплатформенность появится.


ты как то определись для винды или кросс
а то прыгаешь со стула на стул.

знаешь питон - ваяй на питоне. какая разница то
в обоих случаях это будет self-contained
355 3362254
FluentAssertions becomes paid software for commercial use
https://www.reddit.com/r/dotnet/comments/1i17jm0/fluentassertions_becomes_paid_software_for/

Мнение?
356 3362282
>>62254
Как меня бесит опенсор, как я ненавижу контрибьюторов, сука, просто пиздец. Особенно контрибьтеров в опенсорс, охуеть вообще. Сука. Коммитят тут, радуются. Скоро за каждый юзинг платить будете, бляди!
357 3362288
>>62254
Ура, больше не будут везде тащить эту шизу для гуманитариев.
358 3362433
>>62254
Похуй, я этим говном не пользуюсь. Это вообще шиза, вместо простого assert(x>2) писать ебаное сочинение "как я провел тесты".
359 3362445
>>62046
Для винды, но я думал сделать штатными средствами, чтобы без установки всяких допов было.
360 3362503
>>62254
Ждём, когда автомаппер платный станет
361 3362525
>>62254

FluentAssertions очень спорное, пользуюсь им только потому что хотел своих разрабов привлечь к написанию тестов потому что они дуреют с прикормки билдеров и синтаксисов.

Сам таким говном никогда бы не стал пользоваться. Потому что xUnit идеален:

True(expected);
17366136569900.jpg241 Кб, 680x680
362 3362558
>>60331

>Кстати почему медитр говно?



Вся идея Медиатра разваливается нахуй на первом POST запросе с query-параметром и телом. Начинаешь хуярить слои и копировать одинаковые классы.

Я с этой хуйнёй проебался несколько лет, потом понял, что MediatR что это буквально охуенный способ запретить себе писать обычные методы с названиями и параметрами и нахуярить семислойную матрёшку, где у тебя 3-5 абсолютно одинаковых типов только для того, чтобы что оправдать бестолковость использования автомаппера?

или нахуя?
363 3362562
>>62503

>Ждём, когда автомаппер платный станет



Automapper.Generators платный вышел, так же как Automapper.Async
364 3362608
>>62445

>но я думал сделать штатными средствами


ну так делай
self-contained для дотнета куда более штатный чем pyinstaller для питона
а делают то же самое.
365 3362693
>>62608
Я нашел, что можно компилировать csc.exe из папки с фреймворком. Попробую в один файл загнать и интерфейс, и логику во славу Нерзула.
366 3362796
>>62558
Вообще никаких проблем не замечал. Медиатр хорошо структуру задает, особенно учитывая что никто в треде не знает ни ддд, ни гексы, ни чистую.

Я хз как вы код пишете. Вернее почему хз, я видел как вы пишете, от медиатора точно хуже не станет.
367 3362816
>>62796

>я видел как вы пишете


неа. не видел.

>от медиатора точно хуже не станет


добавит лишний уровень косвенности там где и без нее норм.

вот я не пишу на асп. но вот читаем на мсдн
"контроллер ASP.NET Core отправляет команду в конвейер команд MediatR, чтобы они попали в соответствующий обработчик."

а этот "соответствующий обработчик" совсем никак нельзя просто прямо вызвать что ли?
Ах да, тогда ведь нельзя будет навесить всякие там бехавиорсы, которые быстро создадут "хрен пойми что где куда и зачем вызывается" и понадобится особо кое что делать вприсядку чтобы во всем этом был хоть какой то порядок.
368 3363080
>>62796

>Медиатр хорошо структуру задает



Только если используется не более чем в одном слое приложения и если это приложение архитектурно заточено под собственный протокол.
Во всех остальных случаях медиатр - мусор.

> особенно учитывая что никто в треде не знает ни ддд, ни гексы, ни чистую.



Каким боком Медиатр относится к ДДД, восьмиугольнику или чистой архитектуре? Боллее того, Медиатр ломает чистую архитектуру потому что все команды приходится складывать в один слой, который пухнет

>Я хз как вы код пишете. Вернее почему хз, я видел как вы пишете, от медиатора точно хуже не станет.



Чел, я был свидетелем того, как один хуй с помощью медиатра из сервиса на 5000 строк раздул недифференцируемый Уроборос без начала и конца.

Оставьте пожалуйста это говно в 2016 году
369 3363099
>>62796

> особенно учитывая что никто в треде не знает ни ддд, ни гексы, ни чистую.


Из всего этого только чистая реальная тема.
ДДД это чистое инфоцыганство. Гексогоналка вообще хуй пойми что, никто не знает о чем это только могут нести хуйню из промо буклетов для говноедов.
370 3363853
У кого нибудь есть слив boosty.to/ithomester курсов по sql/ef?
371 3363871
>>62816

>а этот "соответствующий обработчик" совсем никак нельзя просто прямо вызвать что ли?


Гуманитарии попали в программирование. Они пишут код, как книги по философии: из простой идее высирают 20 томов графомании. Медиатр, автомапер, Should().Be().Equal().To().Value().Of(2) вместо assert(x==2) - это все признаки гуманитарных долбоебов.
372 3363982
>>63871

> Should().Be().Equal().To().Value().Of(2)


🤩🤩🤩
Обожаю Fluent синтксис. Когда пишу так, как будто на родном английском говорю. И всё сразу понятно!
17367901432000.jpg453 Кб, 1080x1080
373 3363994
>>63871

>Медиатр, автомапер



Говорят, в Asp.NET core 10 включат свою версию Автомаппера. Джеймс Монтемагно пишет, что это добавит выразительности и необходимо для новой встроенное реализации медиатра.
374 3364009
>>63982
код ВНЕ тестов тоже так пишешь?
Нет? а что же ты такой двуличный, пишешь непонятные закорючки вместо англотекста?
375 3364110
Что почитать джуну чтобы преисполниться? Без пережовывания синтаксиса в сотый раз
376 3364114
>>64110
код чужих проектов и либ. пытаясь разобраться в устройстве
код стандартной библиотеки (открой хоть хешсет исходник и познавай) - там тоже много разного

кодить не надо. просто чужие приемы и такой "аааа, круто придумано".
377 3364115
>>64110
Таненбаум Архетуктура ЭВМ.
378 3364116
>>64115

>Таненбаум


чему ученый генетик из биошока сможет его научить
379 3364130
>>64110
Код надо писать, а не дрочить очередей талмуд. Придумай себе какой-нибудь проект и пили.
380 3364141
>>64130
а вот и нет. код нужно ЧИТАТЬ. не порти ньюфага своими глупостями
381 3364145
>>64141
Читать чужой код надо только корпоративным рабам, а свободным господам стартаперам код надо писать.
382 3364171
>>64145

>код надо писать.


ГОВНОкод разве что.
ну да, можно. заказчки код не читают. сам потом жрешь свое говно
383 3364188
>>64009

>код ВНЕ тестов тоже так пишешь?



Да, чтобы коллегам легче читать было на флуенте. Так выразительней. У нас все это экспрешшен. Есть правило, не более чем одна точка с запятой на метод.
384 3364197
>>64188
Да ты пиз.... брешешь
385 3364211
>>64171
Надо читать чужой говнокод.
386 3364222
>>64211
выходит что стандартная библиотека говнокод?
код асп.нет говнокод?
кот того же медиатра говнокод?

хули ты тогда шарпист, если в шарпе только говнокод?
387 3364223
>>64211
Любой чужой код - говнокод, смирись
388 3364233
>>64223
у тебя синдром утенка
ты увидел свой код и подумал что он идеал

тебе уже ничем не помочь.
389 3364265
>>64222

>кот того же медиатра говнокод?



Да, там 300 строк по идее должно быть, но он раздут до каких-то невменяемых размеров.
390 3364528
>>64265
по какой идее
велосипед? ну велосипед может да. а если делать "по красоте", то строчечки размножаются
391 3364538
>>64528

Какая нахуй красота в медиатре? Ты ёбнулся?
392 3364549
>>64538
а ну озвучь претензии к коду медиатра.
а мы посмотрим.
left.jpg233 Кб, 960x1280
393 3364622
>>64549

>а ну озвучь претензии к коду медиатра



Его наличие
394 3364659
>>64622
чем тебе не угодило наличие котика.
впрочем, никто не заставляет пользоваться ни медиатром ни котиком
395 3365044
>>64659

> не заставляет пользоваться медиатром



Помню, как я первый раз после своего джунства после трёх лет ебли с автомаппер+медиатр попал на проект, где ребята не грели себе мозг, а просто писали код на C#.

Я до этого думал, что занимаюсь DDD, чистой архитектурой и cqrs, и что вокруг меня умные люди, а оказалось, что занимался я говном, а вокруг меня были долбоёбы с синдромом архитектора.

Спустя время узнал, что челики, от которых я ушёл просто перестали справляться и их проект развалился к хуям. Туда им и дорога
396 3365053
>>65044
Единственная проблема автомаппера это рефлексия. В остальном это чистое спасение.
У тебя похоже никогда не было необходимо поддерживать статические классы на 8000 строк с описанием мапингов системы. Я ебал рот бля, это учитывая что у одной сущности могло быть до 10 ДТО.
397 3365097
>>65053
есть решения которые генерят маппинги в компил тайм
в результате получается код который можно пощупать
что тебе автомаппер этот.
изображение.png241 Кб, 477x410
398 3365168
>>65053

>У тебя похоже никогда не было необходимо поддерживать статические классы на 8000 строк с описанием мапингов системы.



Автомаппер как-то решает эту проблему?
изображение.png10 Кб, 469x185
399 3365173
Напоминаю, что xUnit охуенен
400 3365781
В какое-же говно скатывается MVVM когда реально используется парадигма - один пишет логику, второй - представление.

Типа - вот сделал я модельку. Чел такой - ой, а я у себя сделаю модельку модельки уже для представления. А потом свой сервис для работы со своими модельками. А сверху - сделаю уже вью-модельку.
В результате, моделька базовая - реактивная, но ее вокруг оборачивает другая реактивная моделька, которая просто прокидывает что-то в обе стороны. Сверху это в сервис оборачивается. Потом - уже вью-модель берет сервис...
А где-то через год - у вас баг с тем что что-то задублировалось и ебись как хочешь - ищи где хочешь. На каком уровне обосрамс - хуй знает, потому что писать же руками проперти - зашквар, пусть будет кодогенерация через MVVM-тулкит) Я ебал в сраку того кто придумал что это удобно. Надеюсь он сдохнет и его так же никто не найдет потом, как невозможно что-то найти с этим говном автосгенерированным Я шучу конечно, ебал я в сраку себя, за то что такой беспозвоночный и не смог отстоять ненужность этой хуйни

Короче. Пришел к выводу, что лучший подход - это идти по тому же пути что и клиент-сервер. Ядро системы - сорт оф сервер. Никакого состояния не хранит, просто принимает команды, запросы - отдает по "протоколу". То что на визуале - нихай складывает себе в какой хочет стейт и как хочет ебется.
401 3365809
>>65781
пидор
402 3365822
>>65781
Ну тут проблема очевидно в том, что деление ответственности должно быть не по слоям, а по фичам.
403 3365847
>>65781
Без реального сервера ты просто создашь себе проблем и через год придешь переписывать обратно
Потому что это всегда сорта стульев
404 3365854
>>65847
Та блин. В чем стулья? Я просто хочу чтобы не возникало 2-3-10 мест где разные состояния и надо их синхронизировать.
Отлаживать это - пизда. Тут юзера изменили. Там он еще не синхронизирвался. Тут - уже, что-то произошло, потекло говно по трубам.
405 3365862
>>65854
Что значит синхронизировался. Ты пишешь десктоп софт или что?
406 3365880
>>65862

> Ты пишешь десктоп софт или что


А что еще пишут с MVVM?

> Что значит синхронизировался


Ну. Вот у тебя есть где-то в слое приложения ApplicationState.
В нем CurrentUser.
Этот стейт - реактивный. При этом - синглтрон.

Далее на уровне представления - у тебя есть вью-модель. CurrentUserAvtarPanelViewModel.
Разработчик этой части - решил что ему не хочется просто стейт брать, он хочет сделать свой CurrentUserVisualModel и свой CurrentUserVisualService. И уже сервис такой - берет из стейта, перекладывает CurrentUser'а в свой CurrentUserVisual.
Теперь. Какой говняк происходит. На уровне приложения - говняк, надо разлогиниться. Визуальной части надо получить изменение. И уже у себя изменить. Далее, если визуальная часть изменяется - она должна опять через всю цепочку дать знать ApplicationState что там юзера переименовали или картинку ему поменяли.

Это через год превращается в ебаный цирк.
407 3365891
>>65880

>синглтрон


Ускоритель одиночек
408 3365896
>>65880

>А что еще пишут с MVVM?


кто знает. вон Razor Pages например
может блазороведы блазорят блазорки по эмвивиэмному

>На уровне приложения - говняк, надо разлогиниться. Визуальной части надо получить изменение. И уже у себя изменить. Далее, если визуальная часть изменяется - она должна опять через всю цепочку дать знать ApplicationState что там юзера переименовали или картинку ему поменяли.


не уловил сути проблемы. то есть я понимаю задачу, но не твою проблему
409 3365917
>>65896

> не уловил сути проблемы


Проблема в том, что нет центрального источника истины.
Так понятно?

В обычном жс-фронте, у тебя обычно есть какой-то единый стейт. Он - твой альфа и омега. Все остальные компоненты - лезут в него, смотрят что там. Далее в зависимости от технологии - как-то могут модифицировать, напрямую, через хуки-хуюки, через команды, да поебать. Суть в том что реальный стейт - один. Если тебе надо посмотреть что происходит - ты берешь компонент, берешь стейт. Сравниваешь. Обычно связь такая: Компонент - стейт. Все. Изолировать какую-то пробему - просто.

В ситуации же которую я описал - у тебя стейтов несколько на нескольких слоях. Какой правильный - хуй его знает.
Особнно охуенно, когда визуальный стейт - взял, и обновил себя заранее, не дожидаясь что на уровне приложения, а приложение кинуло ValidationException которое улетело в пустоту, и типа - вот кнопку нажал, что-то загорелось, должен следующую нажать, нихуя не происходит. Иди ищи. А приложение-то не кинет изменения состояния, чтобы визуальный стейт синхронизировался теперь, ведь изменения не произошло. Вот теперь у вас два состояния, одно визуальное, одно на уровне ниже.

И единственное решение которое я вижу - все состояние должно уехать на "визуальный" уровень. А то что ниже - только выполнять команды и в базу писать. Все.
410 3365920
>>65917

>взял, и обновил себя заранее


что обновил заранее? зачем ты обновляешь заранее? сначала ты выделяешь дополнительный "локальный" стейт чтобы через него работать как то его синхронизируя, а потом жалуешься что оно дескать может быть не синхронно.

>у тебя стейтов несколько на нескольких слоях


у тебя
ты плодишь стейты, хотя они и так есть.
модель - стейт
вьюмодели - визуальный стейт.
Ты либо модифицируешь визуальный стейт, либо, если это касается модели - уже передаешь задачу модели
Каждый отвечает за свою часть - какая еще синхронизация нужна

теперь попробуем понять что ты там понаписал

>И уже сервис такой - берет из стейта, перекладывает CurrentUser'а в свой CurrentUserVisual


ммм. ну обычное дело. чай визуальная модель и модель часто не совпадают.

>Визуальной части надо получить изменение. И уже у себя изменить


ну получила и изменила. чем это отличается от твоего жс фронта где подписаны на какой то там стейт, реагируют меняются, но еще одного "сабстейта" не плодят

>Далее, если визуальная часть изменяется - она должна опять через всю цепочку дать знать ApplicationState что там юзера переименовали или картинку ему поменяли.


так устроен MVVM, но опять хз в чем проблема кроме того что вьюмодель посередине между GUI и моделью стоит?

реально не понимаю твою проблему

>возникало 2-3-10 мест где разные состояния и надо их синхронизировать


ключевое СИНХРОНИЗИРОВАТЬ. Непонятно что такое "синхронизировать".

>Тут юзера изменили. Там он еще не синхронизирвался


непонятно где "там".
ты банальное "эй юзерсервис сохрани юзера" заменяешь на " я положу в список, а далее механизм синхронизации уведомит кого то в модели и засинкает изменения"?

в общем я нипанимат что ты хочешь наворотить и зачем.
410 3365920
>>65917

>взял, и обновил себя заранее


что обновил заранее? зачем ты обновляешь заранее? сначала ты выделяешь дополнительный "локальный" стейт чтобы через него работать как то его синхронизируя, а потом жалуешься что оно дескать может быть не синхронно.

>у тебя стейтов несколько на нескольких слоях


у тебя
ты плодишь стейты, хотя они и так есть.
модель - стейт
вьюмодели - визуальный стейт.
Ты либо модифицируешь визуальный стейт, либо, если это касается модели - уже передаешь задачу модели
Каждый отвечает за свою часть - какая еще синхронизация нужна

теперь попробуем понять что ты там понаписал

>И уже сервис такой - берет из стейта, перекладывает CurrentUser'а в свой CurrentUserVisual


ммм. ну обычное дело. чай визуальная модель и модель часто не совпадают.

>Визуальной части надо получить изменение. И уже у себя изменить


ну получила и изменила. чем это отличается от твоего жс фронта где подписаны на какой то там стейт, реагируют меняются, но еще одного "сабстейта" не плодят

>Далее, если визуальная часть изменяется - она должна опять через всю цепочку дать знать ApplicationState что там юзера переименовали или картинку ему поменяли.


так устроен MVVM, но опять хз в чем проблема кроме того что вьюмодель посередине между GUI и моделью стоит?

реально не понимаю твою проблему

>возникало 2-3-10 мест где разные состояния и надо их синхронизировать


ключевое СИНХРОНИЗИРОВАТЬ. Непонятно что такое "синхронизировать".

>Тут юзера изменили. Там он еще не синхронизирвался


непонятно где "там".
ты банальное "эй юзерсервис сохрани юзера" заменяешь на " я положу в список, а далее механизм синхронизации уведомит кого то в модели и засинкает изменения"?

в общем я нипанимат что ты хочешь наворотить и зачем.
411 3365921
>>65917
А ты чего не сделаешь единое состояние, которое переживает все вью-модельки? А вью-модельки создадутся поверх него и подпишутся на его события?

Выглядит как будто у тебя основная логика уехала на вью-модельный уровень, а уровень репозиториев у тебя слабый.

Ещё вопрос. А чего вы на экране рисуете? Что-то сложное?
image.png69 Кб, 1149x606
412 3365922
Скоро 6 лет опыта разработки на .Net.
Хочу вкатиться в мышиное обучение. Без змеи никак?
413 3365924
>>65922
Питон уже почти не используется в машинном обучении, это стереотип
414 3365926
>>65924
Окей, но ML.Net не развивается.
Тогда что же?
415 3365930
>>65924
пайтон же
416 3365936
>>65922
Я вообще в финтехе работаю.
Вот думаю, в свободное время может начать участвовать в ML.Net сообществе? Заодно и погрузиться в мышинное обучение без отрыва от основной работы/стека, и может стать частью опуенсорсного сообщества ML.NET? Может, мои коммиты примут со временем, какие-нибудь там статьи напишу, всё такое.

Питонистов, например, сейчас много. А спецов по ML.NET, наверное, меньше. Может и спрос на них на каком-то этапе больше.

https://www.linkedin.com/pulse/embracing-future-machine-learning-comprehensive-guide-bansal--niwzc/
417 3365939
>>65920

>что обновил заранее? зачем ты обновляешь заранее? сначала ты выделяешь дополнительный "локальный" стейт чтобы через него работать как то его синхронизируя, а потом жалуешься что оно дескать может быть не синхронно.


Я не обновляю заранее. Обновляет заранее тот кто пишет визуальную часть и кто решил что ему надо еще своих стейтов.

> непонятно где "там".


Я ж расписал...
Ну ладно. Еще раз.
Вот у меня приложение для заметок.
Есть NoteModel - определен в App.Domain
Есть NoteService - определен в App.Application
Далее - есть NoteVisualModel - определен в App.UI
Есть NoteVisualService - тоже определен в App.UI
Сбоку есть NoteViewModel - пользуется NoteVisualModel.
NoteViewModel - дергает NoteVisualService
NoteVisualService - дергает NoteService
NoteService - лезет в БД, пытается что-то сделать, обновляет в случае чего NoteModel

Так вот. Теперь у нас включается человеческая криворукость.
Кто-то берет и обновляет стейт NoteVisualModel в обход всего этого дела. В результате - мы имеем неконсистентное состояние. И оно теперь никак не синхронизируется.

> в общем я нипанимат что ты хочешь наворотить и зачем.


Я хочу чтобы добиться неконституционного состояния было нельзя...

>>65921
А я изначально так и хотел. Чтобы у нас был на уровне приложения определен стейт. И из него просто брали, и пытались модифицировать. Но по ряду причин, в виде 3 сеньеров, которые каждый сам с усам - получилось что получилось.

> Выглядит как будто у тебя основная логика уехала на вью-модельный уровень, а уровень репозиториев у тебя слабый.


Именно прикладная логика - на уровне приложения. Полностью.
Просто там дюже много красявостей, типа тут что-то изменилось., там должно заморгать, при наведении мышки - перестать моргать, там заблокироваться, тут прогрессбар с процентами... Ну короче, там из-за того что дизайнеры надизайнили красявостей таки получилось так, что вот эти красявости много логики и на визуале в плане этих самых красявостей требуют.
При этом - не хочется чтобы эти требования к красявостям проникали на уровень ниже.

> Ещё вопрос. А чего вы на экране рисуете? Что-то сложное?


Ну. Не то чтобы прям сложное. Просто типа вот нажали кнопку на этой панельке, там должно заблокироваться, тут - заморгать индикатор, это подсвечиваться.
Плюс - возможность пользователю все перенастроить, скрыть, перетащить куда надо, ресайзить и вот это вот все.
Раньше было заебись - берешь DevExpress и погнали. Щас DevExpress нельзя, приходится искать что-то более-менее годное или руками делать.
417 3365939
>>65920

>что обновил заранее? зачем ты обновляешь заранее? сначала ты выделяешь дополнительный "локальный" стейт чтобы через него работать как то его синхронизируя, а потом жалуешься что оно дескать может быть не синхронно.


Я не обновляю заранее. Обновляет заранее тот кто пишет визуальную часть и кто решил что ему надо еще своих стейтов.

> непонятно где "там".


Я ж расписал...
Ну ладно. Еще раз.
Вот у меня приложение для заметок.
Есть NoteModel - определен в App.Domain
Есть NoteService - определен в App.Application
Далее - есть NoteVisualModel - определен в App.UI
Есть NoteVisualService - тоже определен в App.UI
Сбоку есть NoteViewModel - пользуется NoteVisualModel.
NoteViewModel - дергает NoteVisualService
NoteVisualService - дергает NoteService
NoteService - лезет в БД, пытается что-то сделать, обновляет в случае чего NoteModel

Так вот. Теперь у нас включается человеческая криворукость.
Кто-то берет и обновляет стейт NoteVisualModel в обход всего этого дела. В результате - мы имеем неконсистентное состояние. И оно теперь никак не синхронизируется.

> в общем я нипанимат что ты хочешь наворотить и зачем.


Я хочу чтобы добиться неконституционного состояния было нельзя...

>>65921
А я изначально так и хотел. Чтобы у нас был на уровне приложения определен стейт. И из него просто брали, и пытались модифицировать. Но по ряду причин, в виде 3 сеньеров, которые каждый сам с усам - получилось что получилось.

> Выглядит как будто у тебя основная логика уехала на вью-модельный уровень, а уровень репозиториев у тебя слабый.


Именно прикладная логика - на уровне приложения. Полностью.
Просто там дюже много красявостей, типа тут что-то изменилось., там должно заморгать, при наведении мышки - перестать моргать, там заблокироваться, тут прогрессбар с процентами... Ну короче, там из-за того что дизайнеры надизайнили красявостей таки получилось так, что вот эти красявости много логики и на визуале в плане этих самых красявостей требуют.
При этом - не хочется чтобы эти требования к красявостям проникали на уровень ниже.

> Ещё вопрос. А чего вы на экране рисуете? Что-то сложное?


Ну. Не то чтобы прям сложное. Просто типа вот нажали кнопку на этой панельке, там должно заблокироваться, тут - заморгать индикатор, это подсвечиваться.
Плюс - возможность пользователю все перенастроить, скрыть, перетащить куда надо, ресайзить и вот это вот все.
Раньше было заебись - берешь DevExpress и погнали. Щас DevExpress нельзя, приходится искать что-то более-менее годное или руками делать.
418 3365941
>>65939

>неконституционного


неконсистентного
фикс
419 3365953
>>65939

>При этом - не хочется чтобы эти требования к красявостям проникали на уровень ниже.



А у тебя выбора другого нет. Если одни элементы визуально связаны с другими - ты хоть разбейся, но придётся это выносить на более глубокий общий слой.

От тебя по ходу требуют писать красивое приложение с анимациями и прочей поеботой, но ты сопротивляешься. А у тебя домен по ходу это рюшечки и моргающие кнопки
420 3365956
>>65953
Нууууу. Я это обошел через шину.
Что-то происходит на уровне домена - визул реагирует. Домену похуй на взаимосвязь визуальную.
А так - да. Требуют рюшей.
Но я уже не раз был в ситуации, когда сначала требуют красявостей, чтобы показать. А через неделю пользования - прилетает от конечного пользователя - дайте возможность все красявости нахуй вырубить и вот такенный список уже нормальных требований по функционалу. Потому - не дам этой хуйне место в домене.
421 3365957
>>65939
решение твоей проблемы просто - ВЫПИСЫВАНИЕ ПИЗДЮЛЕЙ тому, кто пишет херню и нарушает правила.
потому что можно из вида и напрямую в бд залезть и в космос и вообще в другую реальность. Вот только это будет уже нарушение паттерна

насчет NoteVisualModel
смотря что ты под ним понимаешь.
вот для меня есть пара стульев
1 каждая вьюмодель держит в себе свой стейт и общается с другими вьюмоделями какими то событиями заставляя их менять свой визуальный стейт. Все размазано, особенно беда с командами и антипаттер god object много где
2 делаем единый стейт который помесь медиатора с вьюмоделью/презентнорм. Всё меняется в нем и вьюмодели слушают уже его изменения используют напрямую. И команды в нем - он в модель и ходит. Далее изменяет свой стейт и вьюмодели обновляют себя.

и оба варианта говно.
422 3365982
>>65957
Ему просто нужна такая древняя магия дидов как потребитель-производитель ака событийная модель взаимодействия.
Очевидно он пытается сделать так чтобы разные части приложения реагировали на какие-то действия в других частях. Единственный правильный способ сделать такое это создать сквозной слой шины событий.

Если событийная модель приводит к разделению атомарной операции на части, то ты неверно провел границы модулей или неправильно понимаешь границу атомарности операции.
423 3366018
>>65936
https://www.reddit.com/r/dotnet/comments/1cmenho/is_mlnet_relevant/

Короче, надо наверное змею учить и интегрировать сервисы на дотнете и змее.
424 3366045
>>66018
ну можно и так
https://github.com/dotnet/TorchSharp
хотя это слизерин
425 3366133
Есть проект на авалонии, в котором используется directx11 (а точнее Direct2D) для графики. Хочу сделать его кроссплатформенным, и есть два стула, либо мигрировать с Direct2d на skia, либо попробовать использовать dxvk. Насколько реалистичен второй вариант?
426 3366155
>>65957
Вьюмодели придумали пидарасы из микрософта, когда надо было впарить новую вижуал студию. Получилось хуево, как обычно у мелкомягких, и теперь джуны путаются снова и снова.
Есть классическая схема работы десктопных приложений: UI, контроллер, сервис. Контроллер получает данные от UI и передает в сервис. Или получает данные из сервиса и передает в UI. Есть шина событий, на которую подписан контроллер. Данные поменялись, контроллер получил уведомление, запросил данные у сервиса, сказал UI, что надо перерисовать тектбокс. Все просто, не надо никаких медиаторов-хуяторов.
427 3366174
>>66155
Ты наркоман. VeiwModel нужна для дестктопа. Тебе нужно где-то хранить состояние UI.
428 3366183
>>66174
Нет, ты. Как, по-твоему, работают программы на других фреймворках или вообще без фреймворков? Рак под названием MVVM есть только в дотнете, и даже там существует код на винформсах.
429 3366214
>>66155

> То, на что ты тратишь по абзацу текста обычно называют сокращением, чтобы не ебать мозги окружающим. Пойди, почитай про MVC, MVP, MVU, MVVM, и прочее

430 3366411
>>66183
Vue и Angular так-то под MVVM...
Просто там как я уже говорил - стейт обычно не множется. Есть какой-нибудь Vuex, Pina, NgRx и т.д.
Ты загрузил с сервера куда тебе надо состояние. Все. Пока не перезагрузишь - оно такое и будет. Все компоненты - какими-нибудь геттерами подвязались к этому стейту и радуются.

Если нужно чтобы сервер как-то сообщал: вебсокеты и теми же механизмами в тот же самый стейт.

А вот в десктопе какая-то фигня получается(
431 3366414
>>66155

>сказал UI, что надо перерисовать тектбокс.


во-первых, чистый MVC неудобен для десктопа
его вариант типа MVP был возможен для формсов ибо там не было (а может и щас нет) вменяемых биндингов

MVVM используется там где есть БИНДИНГИ
и это не только дотнет. в андроид тоже MVVM и БИНДИНГИ
n4LoL.jpg143 Кб, 800x679
432 3366423
>>66411

>А вот в десктопе какая-то фигня получается(


в десктопе дается общий механизм MVVM
и без наличия других правил каждый терзается по своему
вот обычные MVVM фреймворки похожи, есть сложные типа PRISM
но они больше решают вопросы навигации, разделения на блоки, но как то обходят вопросы "а как лучше поделить на вьюмодели, что в них хранить, а куда команды то..."
Некоторые изобретают MVVMC фреймворки (и носятся с этой диаграммой на пике)...каждый по своему понимая что тут есть контроллер.
У меня вот MVVMP подход

слишком много свободы и, как обычно, подводные камни обходятся молчанием.
433 3366455
>>66423

>А вот в десктопе какая-то фигня получается(



ты заебал
434 3366727
>>66423
У тебя подход насрать в одну кучу. Вью и контроллер - это один слой. Бизнес-логика - это следующий слой. Контроллеру не надо знать про recognition engine, его задача - в нужный момент вызвать IRecognitionService.PerformRecognition(string filePath), получить List<RecognitionResultDTO> и дальше скормить этот лист во вью.
435 3366782
>>66727
основной жалобщик в этом треде не я. Я сам написал кучу WPF фреймворков так что у меня свой франкенштейн с контроллерами и лайфтаймами, и прочими причудами что не канон

но высказаться я могу....
это как раз у MVVM подход "насрать все в кучу" (он и стейт вида обрабатывает и команды в нем же), что и делает его GodObject. Попытки разгрузить вьюмодели и приводит некоторых ко всяким контроллерам (тут уже каждый по своему понимает что он должен делать.)

А этот пик просто бродит по инету и я хз чего это они какой то там Engine отделили от модели.

>Контроллеру не надо знать про recognition engine, его задача - в нужный момент вызвать IRecognitionService.PerformRecognition(string filePath)


ты же сам понимаешь что этот твой коммент лишен смысла? но это ладно. какая разница то.
436 3366837
>>66423

>recognition engine,



Почему так дохуя всего на схеме? На каком уровне медиатр подключен? Это DDD?
437 3366858
>>66837
пациент, вернитесь в палату
438 3366870
>>66837
Это троллинг такой?
image.png501 Кб, 1888x913
439 3366987
Ищу картинку про методологии тестирования, чтобы по нормальному именовать проекты.

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

Особенно доставляет, что есть даже одна перевёрнутая с ног на голову.
440 3366988
>>66987
Потому что гуманитарии пытаются косить под инженеров и примазаться к айтишной тусовке ради бабла, но свою суть им никогда не изменить.
441 3367222
.NET MAUI конечно хорошо но нет ли способа попроще сделать приложение на андройд?
Приложение просто 1 раз запустить без гуя, и что бы оно работало в фоне.
442 3367230
Пишу на C++, но у вас тред живее и вопрос однохуйственен.

Почему Visual Studio временами перестает компилировать код, я ебу мозга, но при банальном перезаходе или перезагрузке он компилируется?

Иногда не компилируется даже после перезагрузки, но банальное создание нового проекта и перепечатка всех прежних внешних файлов без изменений снова делает компиляцию корректной?

Это уже рождает параною. Я не понимаю, не компилируется из-за ошибки какой конкретной, или это неведомой хуйни ебовеной и поможет перезапуск.
443 3367238
>>67230
Да хуй знает.
На редите читал что проблема давняя.
Может ебануть ошибок кучу, а при пересборке ошибки пропадут.
У меня иногда теряет точку входа Main, а при перезапуске находит её и все норм.
Ну такова что бы при пересборке или после перезапуска что то с нихуя не компилировалась такова небыло.
444 3367248
>>67238
Я одно поле из private в public перевел для одного теста, эта залупа минуту одупляла до этого, чтобы без ошибок скомпилировать. Тупая манда блядь.
445 3367253
>>67248
Какая версия студии у тебя?

Алсо поотключай в настройках все лишние анализаторы и фоновые активности.
446 3367255
>>67230
Оператива/не хватает пространства на диске.
447 3367310
>>67222
Просто обёртки возьми. То, что раньше называлось xamarin native
448 3367342
>>67230
Я не пишу на сипипи. Но на сипипи же хуева гора сборочных систем, мейк всякий, и так далее. Выкидывай нахуй всё нестандартное и пересоздай проект из шаблона в студии, а туда свой код перенёси.

Непонятная хуета пропадёт и либо оно начнёт нормально собираться, либо ты всё нахуй сломаешь.

Либо по началу как бы соберётся, но это пиздёжь и самом деле ты упустишь какую-то мелкую деталь и у тебя будет стрелять исключение где-нибудь в ночь на крещение в 2027 году.

Ты никогда не узнаешь если не попробуешь.
449 3367445
>>67342

>Но на сипипи же хуева гора сборочных систем, мейк всякий, и так далее.


Вот, кстати, одна из причин, почему я и забил в свою время на плюсы. Любой, сука, проект будет совершенно по разному собираться. И к каждому нужно еще кучу всяких тулзов и прочей хуйни найти и понаставить, чтобы это просто собралось, не говоря уже про запустилось.
450 3367810
>>67445

Ну что сказать, у нас кросс-платформенный csproj, в котором пара настроек и dotnet build
451 3368490
>>60331

> Кстати почему медитр говно



А есть какая-то проблема, которую он решает? Мне так никто и не объяснил, нахуя он нужен.
изображение.png44 Кб, 1271x575
452 3368529
Наконец-то я дочитал книжку до главы ВЫРАЗИТЕЛЬНОСТЬ. Теперь, я узнаю, почему котлин такой выразительный!
453 3368545
>>68529
потому что его писали с упором на выразительность и создания DSL
поэтому всякий шум типа ; new ()=> и прочего там просто нет.
и есть штуки типа настоящие инлайн функции, функции без классов, скоупы, а также делегирование (когда в шарпе в очередной раз пишу руками класс враппер, то особо об этом вспоминаю не очень добрым, но весьма матерным словом)
454 3368574
>>68545

>функции без классов


Зумеры изобрели процедурную парадигму. В С вообще все так написано, классов нет только куча ебаных функций.
455 3368576
>>68574

>Зумеры изобрели процедурную парадигму.


не изобрели, а не стали говорить "нинужна" понимания что штука весьма весьма пользительная.
456 3368596
>>68574
Там и структуры заново изобрели. Называют их дата-классами.
457 3368618
Писать ботов для игр это к какому программированию относится?
458 3368701
>>68576
А кто-то говорил что не нужно? Статические классы в любом ООП языке это процедурный стиль.
Вообще я почти уверен что мне даже еба сениоры с трудом ответят на простой вопрос "процедура и функция это одно и тоже?"
459 3368717
>>68701

> процедура и функция это одно и тоже?



Попробую ответить, хоть и не еба сениор
Функция - всегда возвращает результат и в большинстве случаев должна не иметь сайд-эффектов.
Процедура - имеет сайд эффекты и может не возвращать результат.
Помнится в паскале для них даже отдельные ключевые слова были.
460 3368724
Нахера они продублировали одинаковый энам, я хуй знает
461 3368731
>>68545

>потому что его писали с упором на выразительность и создания DSL



Спасибо! Теперь понятно, почему котлин такой выразительный.
462 3368749
>>68717
Все отличие в том что процедуры не возвращают значения.
463 3368751
>>68724
Потому что ты не отличаешь enum от класса.
464 3368789
>>68596
не изобрели, а взяли концепцию кортежа. Ты не изобрел колесо, хули ездишь на транспорте.

>>68701

>А кто-то говорил что не нужно?


не могу в шарпе создать функцию без необходимости запихать ее в какой либо класс. минимал апи то вообще не то.

>>68731
вот. все именно так и произошло. шарп тупо копировали "сделаем свою жаву" и потому в основе это калька с жавы и только потом уже стали сахар накидывать, а в котлин сразу закладывалось DSL
465 3368887
>>68751
Не заметил, спасибо. Но всё равно выглядит как хуйня из жопы
466 3368888
>>68751
что не отвечает на вопрос НАХРЕНА
467 3368889
>>68789

>только



Короче, можешь ещё раз повторить, что такое ВЫРАЗИТЕЛЬНОСТЬ?

Я нихуя не понял, для меня это как пиздануть что-то гуманитарное наподобие "Котлин лучше c# потому что он более РЕФЛЕКСИВНЫЙ и ИМАДЖИНИРУЮЩИЙ".
468 3368897
>>68889
ну значит и не поймешь. какой смысл
469 3368988
>>68889

>Короче, можешь ещё раз повторить, что такое ВЫРАЗИТЕЛЬНОСТЬ?


Весь прошлый тред это обсуждали и все уперлось в то, что это просто когда сахарок в одном языке якобы лучше чем сахарок в другом. Причем критерий "лучшести" - это либо следствие синдрома утенка, либо просто представления о прекрасном конкретного кнопкодава.
470 3369022
>>68988

>когда сахарок в одном языке якобы лучше чем сахарок в другом


не якобы, а лучше.
ты не пишешь на жаве, а на шарпе потому что шарп сильно слаще жавы. или это якобы?

>просто представления о прекрасном конкретного кнопкодава.


гм. а чего это шарп такой перетащил primary constructors, backing field, если это же просто чужой сахар который ЯКОБЫ лучше?
загадка природы.
471 3369053
>>69022

> не якобы, а лучше.



Что лучше?

> ты не пишешь на жаве, а на шарпе потому что шарп сильно слаще жавы. или это якобы?



я не пишу на сишарпе, я пишу на дотнете. Нахуй мне всрался ваш синтаксический сахарок, который неебически выразительный если надо ебаться с градлом, который сам сломался - сам починился на следующий день?
472 3369076
Ребяты, почему все в дроп уходит? Что не так делаю?
Мб в RabbitMQ надо создать очередь?
473 3369082
>>69076
Хз, никогда через обёртки типо масс-транзита не работал. Всегда вручную
474 3369107
>>69082
через RabbitMQ Client всё норм получилось(
475 3369143
>>69107

>получилось


и иди нахуй со своим ебучим масс транзитом пиши DDD поеботу, не забудь в медиатр затолкать
476 3369163
>>69143

>и иди нахуй со своим ебучим масс транзитом пиши DDD поеботу, не забудь в медиатр затолкать


Ну бля че в гугле первое выдало то и изучаю)
477 3369250
>>69053

>Что лучше?


сахар ))
вон даже шарп к себе некоторое тащит. Правда кривовато по сравнению с оригиналом, но тащит.

>если надо ебаться с градлом


принимается. сам в шоке как там все непонятно (если не читать мануалов, а я конечно их не читал ни одного по градлу), но....котлин то тут причем. можешь не юзать градл.
478 3369260
>>68888
Ну не знать чем енам лучше чем поля статического класса это уже клиника. Стажер лвл.
479 3369280
>>69260
то есть ты хочешь сказать что имеется енам И статический класс потому что делал стажер, который не понимал разницы? или что ты хотел сказать?
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее