|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
hVosttНахлобучЕсли хотите научиться, то не нужно забивать себе голову паттернами. Книжку про них почитайте, но не надо бросаться их всюду втыкать. Почитайте, осмыслите, и отложите на полку. Потом, года через три, вернётесь к ней снова.Бред. Для начала разберись с тем, что вообще такое «паттерн». Я подскажу, паттерн -- это выработанные годами, готовые, решения распространённых задач и проблем. Нет. Шаблон проектирования -- он потому и "шаблон"; он по определению не может быть готовым решением. Это всего лишь описание того, как ту или иную задачу можно реализовать; описание взаимодействий классов, если угодно. hVosttА вы призываете человека отказаться от них в пользу... чего? Типа если ты хочешь научиться готовить, не надо тебе пользоваться рецептами -- это ПЛОХО! Ну книжку там конечно прочитай, но не стоит им следовать и готовить по рецептам, так что ли?Типа, давай дискутировать без аналогий. Я призываю отказаться от бездумного (а по первости оно так и будет) использования паттернов в пользу своих шишек. Я насмотрелся на код новичков (и помню себя таким же), прочитавших GoF: паттерны ради паттернов; паралич при выборе "правильного" шаблона для решения тривиальнейшей задачи; пропасть между теоретическими знаниями о паттернах и практическом опыте их применения. А задача все еще не решена. Вот от такого развития событий я и предостерегаю. Потом, спустя несколько лет, GoF можно и перечитать -- и тогда эффект будет гораздо более значительным. hVosttПаттерны -- это одно из самых первых, что должен освоить программист. И пускай в начале не будет получаться использовать их в меру и по уму, это всего лишь вопрос опыта, не более того.Нет, это не так. Паттерны по важности плетутся где-то в конце. Первоочередное: умение декомпозировать проблему, писать ясный, понятный и простой код, знать структуры данных и алгоритмы. hVosttНахлобучОдно из самых главных умений разработчика -- это умение есть слонов по кусочкам, то есть умение разбивать большую проблему на ряд мелких, ad infinitum. Не давайте "запрограммировать себя в угол". Не гонитесь за многомудрыми евангелистами от энтерпрайза. Не бойтесь экспериментировать и ошибаться. Старайтесь отдавать предпочтение простым решениям.Много слов и ни о чём. Какие ещё евангелисты, какие простые решения? Паттерны --- это И ЕСТЬ ГОТОВЫЕ ПРОСТЫЕ РЕШЕНИЯ Нет, паттерны -- это не готовые решения. И некоторые из них уж точно не простые. И слова эти таки о чем. hVosttВ общем, не включайте философов, спуститесь на грешную землю. Сами говорите о простоте и тут же растекаетесь в какие-то филосовские словоформы, говоря сразу обо всём, и ни о чём. Т.е. не помогаете человеку вообще ни чем. Никакой конкретики.Мне кажется, я вполне конкретно сказал в первом же сообщении: "делайте максимально просто". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 10:43 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
НахлобучSMARTiпропущено... В чем признаваться, это тестовый проект и я просто пытаюсь научиться писать правильно. Что касается обучения, то -- к сожалению или к счастью -- в нашей отрасли нет ничего абсолютно правильного, как, например, в физике и математике. Есть какие-то решения и подходы, являющиеся компромиссами и правильные в данном конкретном месте.Абсолютно правильная программа (АПП) - это программа, не противоречащая техническому заданию и написанная в оговорённые сроки. Одному техническому заданию может соответствовать множество АПП. зы: Просто мысли вслух. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 10:49 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Алексей КПереезд на другой ORM - это уже за пределами разумного. Т.е. тебе не доводилось переводить проект с NHibernate на EF, или вытаскивать критичные части на Dapper? Ну тут, как говорил мой дядя, обычному радиолюбителю подойдёт и обычный раздолбанный паяльник, нафига ему паяльная станция с сотней наконечников ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 11:22 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Алексей КА тестирование можно организовать и поверх EF, подсунув ему тестовую БД. Бред. Сразу говорю. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 11:23 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
НахлобучНет. Шаблон проектирования -- он потому и "шаблон"; он по определению не может быть готовым решением. Это всего лишь описание того, как ту или иную задачу можно реализовать ; описание взаимодействий классов, если угодно. Ты перечитывай, что пишешь Противоречишь себе. НахлобучЯ призываю отказаться от бездумного (а по первости оно так и будет) использования паттернов в пользу своих шишек. Да божешь ты мой. Я призываю бездумно даже глаза не открывать. Это применительно к чему угодно. Просто так, бездумно даже мухи, как говорится, не ипутся. В чём смысл этого высказывания? Включайте мозг, типа? Ну и при чём тут, конкретно, паттерны? НахлобучПотом, спустя несколько лет, GoF можно и перечитать -- и тогда эффект будет гораздо более значительным. Т.е. сначала оперируй, потом уже книжки читай, так? Не говори чепухи. НахлобучНет, это не так. Паттерны по важности плетутся где-то в конце. Первоочередное: умение декомпозировать проблему, писать ясный, понятный и простой код, знать структуры данных и алгоритмы. Опять ни о чём. Опять словоблудие. Опять высокопарные высказывания в стиле "Делай хорошо". Что такое ясный, понятный и простой код? ЧТо это? Какие структуры данных надо знать? Какие алгоритмы надо знать? Что такое умение декомпозировать (кстати, да...))))) проблему? Как это вообще? Что ты вообще под всем этим понимаешь? Как тебя понять? Что такое вообще говоришь )))) О чём ты???? НахлобучМне кажется, я вполне конкретно сказал в первом же сообщении: "делайте максимально просто". Ещё раз говорю. Ни о чём. Как построить дом? -- Делай максимально просто.. Оооокееей. Как вырастить дерево? -- Делай максимально просто... А, ну понел, ооооокей. Я тоже так могу советы раздавать. Бесмысленные, глупые и абсолютно бесполезные. Ни грамма пользы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 11:29 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
hVostt, Нахлобуч прав, с начало был код, много кода, потом какая то опг решила срубить денег через издательский бизнес, систематизировала этот код в так называемые паттерны и предложила эту матрицу.. примеров много, с начало было много слов, много рифмы, потом часть критиков ( которые постоянно вьются как шакалы вокруг щелкоперов) систематизировала это в ямы , хореи, амфибрахии и т.д. но не один из них не написал чего то серьезного.. на волне этой дискуссии вспомнилось: "На третьем ходу выяснилось, что гроссмейстер играет восемнадцать испанских партий. В остальных двенадцати черные применили хотя и устаревшую, но довольно верную защиту Филидора" ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 13:04 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Развели флейм на ровном месте. В статье есть ссылка на код, работающий в продакшн. ТСу надо только прочитать статью и разобраться в нем. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 13:06 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Ну и первый пост топика прочитайте. Человек изучает использования NHibernate и паттернов. Значит ему это надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 13:10 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Где-то в степи, т.е. вы хотите сказать, что паттерны не несут никакой пользы, кроме того что приносят деньги издателям которые печатают о них книги? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 14:50 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Где-то в степиНахлобуч прав, с начало был код, много кода, потом какая то опг решила срубить денег через издательский бизнес, систематизировала этот код в так называемые паттерны и предложила эту матрицу.. «Так называемые паттерны» ты, как программист, будешь применять в любом случае. Хочешь ты этого или нет. Даже если ты упоротый в край фанатик против паттернов, ты не сможешь написать ни одну более менее сложную систему, не воспользовавшись ни одним паттерном. Даже не зная этого. Посему. Какого хрена? Ну систематизировали люди знания, ну срубили на этом бабла? А ты типа хотел, чтобы кто-то это сделал просто так, забесплатно? Я не понимаю к чему ты клонишь. Отменить книжки, сжечь всё к чертям и кодить по наитию? Как? Где-то в степипримеров много, с начало было много слов, много рифмы, потом часть критиков ( которые постоянно вьются как шакалы вокруг щелкоперов) систематизировала это в ямы , хореи, амфибрахии и т.д. но не один из них не написал чего то серьезного.. Это жизнь, чувак. Это жизнь. Программирование, это дисциплина прежде всего. И дисциплина подразумевает систематизацию знаний. Развитие. Что-то постоянно переосмысляется, дополняется, видоизменяется. И я вижу, что люди, учившиеся по одним книгам когда-то давно, видят, что сейчас знания трансформировались, и большая часть того, что они учили уже не актуально, начинают грубо истекать желчью. Почему так? Старческий маразм? Вот, дескать, в наши времена всё делали на перфокартах, а доступ к компьютеру имели лишь избранные, и тогда я был крут, как переваренные яйца. А щас любой сопляк скачивает студию и он уже программер. Не хорошо это, не хорошо... Проблема опытного специалиста в том, что он тупо забыл напрочь, что значит быть новичком. И вот он видит, как новички начитавшись про паттерны начинают лепить их как попало, куда попало, и потекло...... Ну это же новички, ну что вы хотите? Вы ему советуете, выбрось книжки, и делай проще. Это как, проще??? Может проще вообще не заниматься программированием, завернуться в простыню и ползти на кладбище? Может проще веником махать на улице по утрам? Может проще курить бамбук нихрена не делая ночным охранником? Что вы такое городите? Где-то в степина волне этой дискуссии вспомнилось: "На третьем ходу выяснилось, что гроссмейстер играет восемнадцать испанских партий. В остальных двенадцати черные применили хотя и устаревшую, но довольно верную защиту Филидора" Быть новичком и познавать -- это круто! Делать ошибки, учиться -- круто! Круто знать, что ты ещё столького не знаешь, и столько ещё впереди! Нехрена не круто быть упоротым старпёром, который пересёк границы маразма и резко превратился в седого старика, сидящего на лавочке и порицающего каждого проходящего мимо него сопляка, с горьким «эх, вы...». Решить, что ты уже всё знаешь и вывести формулы жизни «ду ит симпле маза фак, маленький гоунюк», значит просто переместить себя на свалку истории. Если кто-то сам так для себя решил, -- да не вопрос. Но не надо раздавать плохие, вредные советы новичкам, познающим азы офигенной, крутой дисциплины. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 15:12 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
hVosttАлексей КПереезд на другой ORM - это уже за пределами разумного. Т.е. тебе не доводилось переводить проект с NHibernate на EFНет, не доводилось. hVostt, или вытаскивать критичные части на Dapper? Критичные части надо вытаскивать в хранимые процедуры. hVosttАлексей КА тестирование можно организовать и поверх EF, подсунув ему тестовую БД. Бред. Сразу говорю.Спасибо за интересное мнение. Есть о чём задуматься. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 15:55 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
использовать или нет паттерны - зависит от заказчика, если он за это платит (т.е. платить за то, что бы прогер сделал себе всякие темплейты для других заказчиков) я когда то автоматизировал дверную фабрику, естественно полез изучать технологии деревообработки и с удивлением обнаружил - оказывается есть 46 паттернов как "две палки соединить" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 16:13 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
а так важных :) паттернов немного - если тебе нужен Лист, то создай Дикшинари если тебе нужна табличка, то создай индекс зачем Инт, когда можно писать Вар зачем ЕФ..., когда можно ДБ... ... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 16:35 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
когда ВИПРОС просишь создать Тип, то она автоматом создает Тип, оставляет возможность создать проекции, генерирует надтип (агрегат) и включает этот тип в агрегат, создает дефольтный макротип (ассоциация типов) :) потому что все эта кухня тебе обяхательно будет нужна как только пойдешь дальше :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 16:38 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
иногда Декомпозиция слишком дорогое удовольствие, а Обобщение дается легко, потому лучше Декомпозицией повременить сначала частная (понятная) задача, потом Обобщение, потом Декомпозиция, потом Расширение, потом О потом Д.... но вот начальные структуры сразу должны быть заточены на эти циклические пересмотры ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 16:41 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
в воще на программирование свет клином не сошелся, ищите себе норм профессию, пока молоды :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 16:42 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
skyANAРазвели флейм на ровном месте. В статье есть ссылка на код, работающий в продакшн. ТСу надо только прочитать статью и разобраться в нем.Действительно, развели на пустом месте целую науку . В былые времена было бы написано что-то вроде: Код: sql 1. 2. 3. 4.
Теперь было бы написано как-то так: Код: c# 1. 2. 3.
"Но мы не ищем лёгких путей, нам нужны абстракции, нам важен процесс а не результат" - что и было сказано топикстартеру. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 16:58 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Алексей К, забавный ты человек. 32 строки кода у тебя уже наука :) А что тогда для тебя EF? Чёрная магия? :) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:36 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Алексей КВ былые времена было бы написано что-то вроде: Код: sql 1. 2. 3. 4.
Теперь было бы написано как-то так: Код: c# 1. 2. 3.
"Но мы не ищем лёгких путей, нам нужны абстракции, нам важен процесс а не результат" - что и было сказано топикстартеру. :-) Где ты опять увидел сложные пути и лишние абстракции? Вот код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Что с ним не так? Тебя пугает то, что класс ничего не знает о db и содержит только логику? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:41 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
skyANAАлексей К, забавный ты человек. 32 строки кода у тебя уже наука :) А что тогда для тебя EF? Чёрная магия? :)Да мне сам подход не нравится. В наш век LINQ-ORM применять старые подходы, на мой взгляд, неразумно. Да и вообще: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Сами создаём проблемы, потом сами их решаем: авторВсе действия происходят внутри одной транзакции. Мы учли все изменения данных: удалили неподтвержденные заказы, сохранили измененный объект Account. В принципе этот код можно было бы так и оставить, но мы этого не сделаем по нескольким причинам: Это код доменной логики и он должен находится в корне агрегации - доменном объекте Client. Но в таком виде этот код нельзя переносить в объект Client, т.к. придется передать в него и интерфейсы репозиториев В коде есть явные вызовы репозиториев. Если выбирать/удалять/сохранять приходится много объектов - это создает дополнительный код с вызовами соответствующих репозиториев, а также дополнительную связность объектов. В данном случае 3 интерфейса связаны с классом ClientService Мы дублируем доменную логику с вызовами соответствующих репозиториев. Например, при удалении заказов вызывается сначала client.RemoveOrder, а потом удаление из БД orderRepository.Remove Есть шанс забыть вызвать репозиторий для одного из измененных объектов, тогда не все изменения попадут в БД ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:48 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
skyANAАлексей КВ былые времена было бы написано что-то вроде: Код: sql 1. 2. 3. 4.
Теперь было бы написано как-то так: Код: c# 1. 2. 3.
"Но мы не ищем лёгких путей, нам нужны абстракции, нам важен процесс а не результат" - что и было сказано топикстартеру. :-) Где ты опять увидел сложные пути и лишние абстракции? Вот код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Что с ним не так? Тебя пугает то, что класс ничего не знает о db и содержит только логику? :)Да, я против смешивания логики и данных в одном классе. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:50 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Алексей К, ты уже глупости начал писать: "В наш век LINQ-ORM применять старые подходы, на мой взгляд, неразумно". UnitOfWork старый подход? А то что ORM-ы именно его и реализуют тебя не смущает? Получается, что ты каким-то старьём пользуешься. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:53 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
Алексей КskyANAпропущено... Где ты опять увидел сложные пути и лишние абстракции? Вот код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Что с ним не так? Тебя пугает то, что класс ничего не знает о db и содержит только логику? :)Да, я против смешивания логики и данных в одном классе.То есть предлагаешь добавить ещё классов? Типа ClientService какой-нибудь? Или логику в контроллеры запихать? Что из этого более современно? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:56 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
skyANAАлексей К, ты уже глупости начал писать: "В наш век LINQ-ORM применять старые подходы, на мой взгляд, неразумно". UnitOfWork старый подход? А то что ORM-ы именно его и реализуют тебя не смущает? Получается, что ты каким-то старьём пользуешься. :)Я в первую очередь про смешивание логики и данных в одном классе, как это раньше было принято. А то, что в EF данные можно сохранять только через жопу UoW - это на мой взгляд недостаток, а не преимущество. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 17:59 |
|
Правильно ли исполнены паттерны UnitOfWork и Repository для Nhibernate?
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Да, я против смешивания логики и данных в одном классе.То есть предлагаешь добавить ещё классов? Типа ClientService какой-нибудь? Или логику в контроллеры запихать? Что из этого более современно? :)Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2015, 18:00 |
|
|
start [/forum/topic.php?fid=17&msg=39030330&tid=1349511]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
149ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 254ms |
total: | 508ms |
0 / 0 |