🇨🇳 Какой язык программирования самый лучший? Я вот думаю, что китайский. Ладно, это шутка-минутка. Не могу без них, простите.
Кажется, что все понимают холиварность этого вопроса, итогом которого будет ответ "дело вкуса". Но почему-то, когда вопрос касается библиотек, то тут уже не так очевидно.
Я вот недавно узнал, что мой любимый MediatR некоторые люди считают говном! (Кстати, он скоро станет частью BCL, с чем я его и поздравляю! Точнее старину Джимми Боггарта) Мол, он усложняет чтение кода, а нормального CQRS не дает.
🤬 Сначала хотелось возразить, что это все жуткая неправда, и вы все не понимаете! Вот же есть классные репозитории, у которых не зря в названии стоит CleanArchitecture и там используется MediatR! https://github.com/jasontaylordev/CleanArchitecture
Ну я собственно и возразил! Потому что, йопт, я человек или где?!
Мне в ответ кинули этой статьей https://cezarypiatek.github.io/post/why-i-dont-use-mediatr-for-cqrs/
Разумеется я поступил с материалом, как и положено порядочному оппоненту в споре – положил на нее С ПРИБОРОМ и написал в чат, что ОБЯЗАТЕЛЬНО ознакомлюсь.
🤔 Но все же я задумался. А ведь и правда, человеку стороннему, все эти хэндлеры с запросами и прочими бихейвиорами покажутся прям дремучим лесом. В тысячу раз понятнее как прочитать вот это
var result = await _smsService.Send(message, ct)
чем вот это
var result = await _mediatr.Send(message, ct);
Конечно, уверенный пользователь медиатра не напишет такого кода. Но у нас есть новички, которые могут всякое. Могут и не так понять, как использовать. Это как в трудностях перевода – по формке все правильно, а по факту нет.
Вот тут меня и осенило. Это сейчас будет не новая мысль, но все же. Библиотеки – это расширения для языка. А значит, люди, пользующиеся разными библиотеками, по сути говорят немного на разных языках.
Ну точнее не совсем на разных языках, но на разных диалектах. Поэтому код, понятный одному, написанный по всем принципам SOLID может быть непонятен другому. И это вполне нормально! А значит польза или бесполезность библиотек – это дело вкуса, как и в случае с языками программирования.
Я вот не люблю AutoMapper (кстати, тоже въехал в BCL). Мне кажется, что в нем есть смысл только тогда, когда названия свойств в моделях одинаковые. Если же есть хоть одно отличие, то вот эти все правила маппинга, которые ты потом еще и хрен найдешь, усложняют модификацию кода. Охренеть причем как!
Но при этом я видел людей, которые легко находили эти правила, и придумывали понятные DSL'ки для поиска. То есть для них понятные, для остальных это все еще был пиздец.
🅰️ Подытоживая: Выскажу такую мысль. Нет плохих библиотек,
Вместо тотального отрицания, лучше постараться понять, почему что-то удобно для человека, и почему может быть неудобно для вас. Нужно порефлексировать вместе, прикинуть, какие потребности вы хотите закрыть и сделать нужный выбор. Так в коллективе сложится продуктивная среда с положительным отбором технологий, а не токсичное ебаное болото, где все разрабатывают на говеной Java с библиотеками тысячелетней давности!