|
Зацените WTF
|
|||
---|---|---|---|
#18+
Наткнулся сегодня в проекте: Код: c# 1. 2. 3. 4.
PS. Сейчас при копипасте в Code Lense увидел, что на эту жесть почти полсотни references и мне что-то сразу погрустнело... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2020, 20:57 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
fkthat, А чего, вполне себе классика. По сути DbContext реализует данный интерфейс из коробки. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 00:24 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
hVostt fkthat, А чего, вполне себе классика. По сути DbContext реализует данный интерфейс из коробки. Это классика "Leak of abstraction" и "Ghost object". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 07:28 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
fkthat Это классика "Leak of abstraction" и "Ghost object". Нуачо, вполне себе рабочее решение для типовых проектов :) Интереснее рассмотреть кейс, в котором подобное решение принесёт боль. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 07:31 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
hVostt Интереснее рассмотреть кейс, в котором подобное решение принесёт боль. The generic repository is just a lazy anti-pattern The Generic Repository Is An Anti-Pattern А уж более "Generic" чем то что выше уже даже и вообразить сложно, разве что сделать совсем уж так: Код: c# 1. 2. 3. 4.
Боль в том, что (не)люди разломали всю систему логгирования ASP.NET (заменив её полностью на свою собственную, которая почему-то все сообщения пишет с уровнем Info) и никто полгода это не хочет чинить (надо ведь новые фичи пилить, а не приводить в порядок то что есть). Но зато в проекте при этом тонны вот такого хлама, типа вот такого "репозитория" и около полусотни каких-то ерундовых методов-расширений в одну строчку к типу System.Object (привет интеллисенсу). И, да. На сегодня у нас нет ни одного юнит-теста. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 09:59 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
Зато, наверное, продаётся ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 10:55 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
Shocker.Pro Зато, наверное, продаётся А энтерпрайзная разработка давно превратилась в отрасль шарлатанства. "Когти жабы от вашей болезни не помогли, но вы еще нам заплатите и мы вас вылечим порошком из бивня дракона". Истратив кучу денег бедолага-больной посылает шарлатанов нахрен, но только для того, чтобы уйти от них к точно таким же. А в это время те, кто ушел от вторых приходит за лечением к первым. На том вся отрасль и держится. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 11:03 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
Люблю магию. Будут вакансии - зови ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 11:10 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
Shocker.Pro Люблю магию. Будут вакансии - зови ) Тут плохая магия. Магия вуду. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 11:16 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
В любой литературе по проектированию пишут, что абсолютное и слепое следование всем принципам и паттернам будет имеет обратный эффект, а достичь максимального соответствия этим требования просто невозможно. Этап, когда я плевался на какой бы то ни было код, лично у меня, давно прошел. Потому, что абсолютно всегда можно сделать лучше чем было, а в процессе легко сделать хуже, переусложнив и т.д. тут главное пережить переходный период, максимализм, абсолютизм, нигилизм и прочие варианты девиантного поведения :) p.s. пока одни пишут идеальный код, другие его продают. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 16:17 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
Roman Mejtes Потому, что абсолютно всегда можно сделать лучше чем было , а в процессе легко сделать хуже, переусложнив и т.д. Yes :) Roman Mejtes тут главное пережить переходный период, максимализм, абсолютизм, нигилизм и прочие варианты девиантного поведения :) Это всё неплохо. Главное понимать, что конкретно тебе даёт то или иное решение. Или чем конкретно мешает. Измеримый профит и фейл. На анти-паттернах сделаны лучшие в мире решения :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 18:27 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
Roman Mejtes В любой литературе по проектированию пишут, что абсолютное и слепое следование всем принципам и паттернам будет имеет обратный эффект, Давайте же делать все наоборот. И дорогу на красный свет переходить вместо зеленого. Roman Mejtes Этап, когда я плевался на какой бы то ни было код, лично у меня, давно прошел. Я на говнокод особо тоже не плююсь. Но говнокод как раз можно вычистить - это только вопрос времени и усилий. А вот WTF, типа того же выпиливания готовой, работающей системы логирования и замены её на неработающий самодел, это штука обычно куда хуже, чем самый адов говнокод. Roman Mejtes а в процессе легко сделать хуже, переусложнив В том-то и дело, что WTF чаще всего и возникает, когда, чтобы все было нормально, на самом деле, нужно просто ничего не делать . Т.к. то, что есть готовое из коробки, оно уже и так нормально работает. "Официальная" история про русского Левшу умалчивает тот факт, что после того, как он английскую механическую блоху подковал, эта самая блоха полностью перестала работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 21:51 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
hVostt Интереснее рассмотреть кейс, в котором подобное решение принесёт боль. Ну вот, пример конкретно по теме. Я всегда пишу юнит-тесты для BL используя EntityFrameworkCore.InMemoryDatabase. Например, создал инстанс, засунул данные, подсунул сервису в конструктор. А теперь мне надо делать то же самое, только еще и создавать и сетапить mock для этого квази-репо: Код: c# 1. 2. 3. 4. 5.
или Код: c# 1. 2. 3. 4. 5.
и там и там строки 3 и 4 вообще лишние. А если надо по нескольку репо, то будет еще хуже. И еще умножаем на количество тестов BL, которых много. Да и вообще, стоит, наверное что-то оценивать не по "принесет ли это боль", а по "принесет ли это пользу". Пользы от этого мусора я не вижу никакой. Хотя бы уж IQueryable тогда возвращали - и то хоть какой-то профит был бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2020, 22:09 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
fkthat и там и там строки 3 и 4 вообще лишние. А если надо по нескольку репо, то будет еще хуже. И еще умножаем на количество тестов BL, которых много. Так это. Ну так ты не можешь замокать хранилище, вместо этого ты подсовываешь реализацию инмемори. Что это означает? Логику хрен нормально протестишь. Как и куда бы репо не был засунут, это всего лишь вопрос локализации проблемы, никуда она не девается. Поэтому, раз уж репо используется, почему бы не сделать его использование простым? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 09:05 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
fkthat Хотя бы уж IQueryable тогда возвращали - и то хоть какой-то профит был бы. Ну вообще так часто и делают. Пока не встретишь людей, который идею юзать IQueryable встречают большими круглыми глазами: ТЫ ШТО!!?? высталять IQueryable наружу?!?? Нельзя-нельзя-нельзя!!! В ад попадёшь! Еритик! Сжечь! Ахахх.. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 09:07 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
hVostt Ну вообще так часто и делают. Нельзя-нельзя-нельзя. Гореть в аду тем, кто такое делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 12:20 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
hVostt, Репы вообще никто дизайнить не умеет. Я когда в проекте вижу какую-нибудь подпапку, типа, "Repositories", то я всегда ожидаю там увидеть какое-то гамно. И меня это ожидание никогда не обманывает ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 12:30 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
fkthat hVostt, Репы вообще никто дизайнить не умеет. Я когда в проекте вижу какую-нибудь подпапку, типа, "Repositories", то я всегда ожидаю там увидеть какое-то гамно. И меня это ожидание никогда не обманывает Ну вообще репа это только хранилище. Идеальная репа (упрощённо): Код: c# 1. 2. 3. 4. 5. 6.
всё :) ничего больше тут не нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 13:49 |
|
Зацените WTF
|
|||
---|---|---|---|
#18+
hVostt Ну вообще репа это только хранилище. Идеальная репа (упрощённо): Код: c# 1. 2. 3. 4. 5. 6.
всё :) ничего больше тут не нужно Да. Это и есть абсолютно правильная репа. А лепят всегда какого-то мутанта-франкенштейна у которого морда от репы, а попа от Unit of work, хотя это два подхода вообще диаметрально противоположные. UoW это когда я пришел в библиотеку и читаю книгу в читальном зале. А репо, это когда я её беру оттуда домой, неделю читаю., а потом обратно приношу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 14:51 |
|
|
start [/forum/topic.php?fid=17&tid=1349049]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 151ms |
0 / 0 |