tag:blogger.com,1999:blog-458002489272917533.post6114495978285208494..comments2024-02-14T14:07:38.890+05:00Comments on Блог Александра Бындю: Открытие рубрики «Совершенный код»Alexander Byndyuhttp://www.blogger.com/profile/14185486842573956085noreply@blogger.comBlogger48125tag:blogger.com,1999:blog-458002489272917533.post-9863054983753392962022-04-03T09:54:34.498+05:002022-04-03T09:54:34.498+05:00The King Casino Resort - Hertzaman
Find the perfec...The King Casino Resort - Hertzaman<br />Find the perfect place to stay, <a href="https://www.herzamanindir.com/" rel="nofollow">herzamanindir.com/</a> play, and unwind <a href="https://worrione.com/" rel="nofollow">worrione.com</a> at <a href="https://jancasino.com/review/merit-casino/" rel="nofollow">https://jancasino.com/review/merit-casino/</a> Harrah's Resort Southern California. Get <a naisbittfahmyhttps://www.blogger.com/profile/10243314405957367764noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-64152257662103296632010-05-14T06:33:53.824+06:002010-05-14T06:33:53.824+06:00@Dmitry Sukhovilin
В том то и дело, что нет правил...@Dmitry Sukhovilin<br />В том то и дело, что нет правильного варианта. Какая-то ORM при текущем знании о системе кажется идеальной. Через год система становится совершенно другой и в этом свете другая ORM становится идеальной.<br /><br />Видимо это издержки Agile. Движение никогда не прекращается. Мы не можем тешить себя надеждой "сразу выбрать правильный вариант".Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-45887669187953965572010-05-14T02:22:08.773+06:002010-05-14T02:22:08.773+06:00Бусспорно, если заказчик будет финансировать смену...Бусспорно, если заказчик будет финансировать смену ORM то будем менять.<br />Но нужно будет ответить на вопрос - "А почему сразу не выбрали правильный вариант ?"<br />Не все же заказчики будут вникать в проблемы девелопмента.Dmitry Sukhovilinhttps://www.blogger.com/profile/16091745026628988084noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-61816518975781523942010-05-12T13:28:32.145+06:002010-05-12T13:28:32.145+06:00@Илья Дубаденко
Значит эта часть функционала не н...@Илья Дубаденко<br /><br />Значит эта часть функционала не нужна.hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-15722979780193082052010-05-12T13:28:17.179+06:002010-05-12T13:28:17.179+06:00@Илья Дубаденко
> Сделав обертку можно утратит...@Илья Дубаденко<br /><br />> Сделав обертку можно утратить часть функционала<br /><br />Это ты из практики своей взяли или мы про сферического коня?<br /><br />Мы сделали обертку и не потеряли функциональность.Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-64841689288463465642010-05-12T13:06:27.887+06:002010-05-12T13:06:27.887+06:00@Александр Бындю
Сделав обертку можно утратить ч...@Александр Бындю <br /><br />Сделав обертку можно утратить часть функционала.Илья Дубаденкоhttps://www.blogger.com/profile/03756815679135463187noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-46379823538287505862010-05-12T08:28:41.191+06:002010-05-12T08:28:41.191+06:00@Илья Дубаденко
> некоторые вещи нужно выбират...@Илья Дубаденко<br /><br />> некоторые вещи нужно выбирать "раз и насегда" для конкретного проекта. Например, тот же IoC контейнер, логгер, автомаппер, viewengine<br /><br />Это все тоже заменяли. Как раз последнее было с IoC контейнером. Меняли Ninject -> Windsor. Я советую делать обертку для IoC-контейнера, каким бы совершенным он ни казался.Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-60566064410126098832010-05-12T03:15:39.836+06:002010-05-12T03:15:39.836+06:00@hazzik
Надо мыслить прагматично, если стоимость п...@hazzik<br />Надо мыслить прагматично, если стоимость перехода на новую ОРМ будет дороже, чем реализация функционала гибкой смены ОРМ, конечно с учетом вероятности такого события, то тогда разумно писать сразу гибко. Стоит не забывать, что бюджет определяется толщиной кошелька заказчика, который просто так менять что-то не станет.<br /><br />>Нужно писать код, который работает...<br />Истину Илья Дубаденкоhttps://www.blogger.com/profile/03756815679135463187noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-46318474582945521412010-05-12T02:26:05.566+06:002010-05-12T02:26:05.566+06:00>Но(!) это вовсе не означает что нужно писать п...>Но(!) это вовсе не означает что нужно писать путанный код, игнорируя паттерны. <br />Нужно писать код, который работает, по возможности приводя его к уже отработанным решениям. А писать чтоб было красиво это, по меньшей мере, глупо.hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-26356336378112340522010-05-12T02:01:57.183+06:002010-05-12T02:01:57.183+06:00@Илья
Просто когда к тебе приходит заказчик и гов...@Илья<br /><br />Просто когда к тебе приходит заказчик и говорит сделай мне пожалуйста двойное сальто назад, а твоя ОРМ позволяет сделать это сальто только через 3 месяца... Или ты говоришь: "ок, мы неделю меняем ОРМ" и сальто получается сделать за 2 дня.<br /><br />Смотрите сами... Раз и на всегда не получается как-то.hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-3780578293049665432010-05-12T01:11:34.179+06:002010-05-12T01:11:34.179+06:00Я присоединяюсь к Dmitry Sukhovilin, некоторые вещ...Я присоединяюсь к Dmitry Sukhovilin, некоторые вещи нужно выбирать "раз и насегда" для конкретного проекта. Например, тот же IoC контейнер, логгер, автомаппер, viewengine...Разумеется прежде чем выбрать что-то, нужно взвесить все за и против.<br /><br />Но(!) это вовсе не означает что нужно писать путанный код, игнорируя паттерны. <br /><br />Вообщем я за то, что не стоит гнаться за Илья Дубаденкоhttps://www.blogger.com/profile/03756815679135463187noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-81639109440662927932010-05-12T00:49:54.382+06:002010-05-12T00:49:54.382+06:00@Dmitry Sukhovilin
Никогда не говори "никогда...@Dmitry Sukhovilin<br />Никогда не говори "никогда".<br />Также приходилось менять IoC контейнер.<br />У нас в практике такое случается часто, потому что мы аджайлисты (кататак). Если ты делаешь agile, будь готов что в любой момент поезд твоего проекта повернет в любую сторону.<br /><br />Да, бесспорно, для небольшого проекта длиной в месяц и менее, который ты сдал и забыл вряд ли hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-73981268501131846402010-05-12T00:44:36.067+06:002010-05-12T00:44:36.067+06:00>> А у вас были случаи ? Если да, то в чем п...>> А у вас были случаи ? Если да, то в чем причина?<br /><br />persistence - это не только ORM.<br />У меня был проект, в котором, в зависимости от настроек, работа идет с одним из трех persistence: MS SQL Server, web-service или сериализованные объекты в файловой БД.ankstoohttps://www.blogger.com/profile/10690746799538408916noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-7937341949339015122010-05-12T00:11:29.371+06:002010-05-12T00:11:29.371+06:00@Александр Бындю
Кстати, да, вот тут описал пробл...@Александр Бындю<br /><br />Кстати, да, вот тут описал проблемы, с которыми мы столкнулись <br />http://blog.byndyu.ru/2009/12/llblgen-vs-nhibernate.html<br /><br />Хотя по началу все шло, как по маслу :) В течение года использовали LLBLGen, после этого перешли на NHibernate.Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-86687015019427860792010-05-12T00:08:08.191+06:002010-05-12T00:08:08.191+06:00@Dmitry Sukhovilin
> А у вас были случаи ? Есл...@Dmitry Sukhovilin<br /><br />> А у вас были случаи ? Если да, то в чем причина? <br /><br />Да, я в уже в 3-4 проектах менял ORM. Причина простая. Когда проект начинается, то выбирается самая подходящая на тот момент ORM. Но со временем 1) вылезают проблемы 2) выходит более зрелый продукт и приходится отказываться от текущей ORM в пользу более совершенной.<br /><br />Вот какие были Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-89370844778446450112010-05-11T23:59:41.298+06:002010-05-11T23:59:41.298+06:00Интересно читать - при смене ORM придется....
Вы ...Интересно читать - при смене ORM придется....<br /><br />Вы на проектах часто ORM меняете? Начили на LLBL закончили на LINQ<br />А платформу? :)<br /><br />Я хочу сказать, что нет ничего плохого если реализация persistence будет заточена под конкретный ORM.<br />Ежинственный агрумент must have - это замена ORM (интерфейсов от ORM) на mock object.<br /><br />На моей практики на разу не приходилосьDmitry Sukhovilinhttps://www.blogger.com/profile/16091745026628988084noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-77155348346160547522010-05-11T21:58:43.257+06:002010-05-11T21:58:43.257+06:00@Sergey
> Собственно, весь код тут одна большая...@Sergey<br />> Собственно, весь код тут одна большая проблема<br />Отбросьте эмоции, Сергей :)<br /><br />Можно по пунктам, в чем заключаются проблемы?Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-42329231779517514992010-05-11T21:36:45.872+06:002010-05-11T21:36:45.872+06:00Ох блин, это ж надо, linq2sql вытащить в контролле...Ох блин, это ж надо, linq2sql вытащить в контроллер! Мое IMHO – linq2sql classes не должны покидать пределов сборки Linq2SqlDataProvider.<br /><br />Собственно, весь код тут одна большая проблема, нарушены, по-моему все принципы создания «хорошего кода».Unknownhttps://www.blogger.com/profile/14947914932640750070noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-53248141595114145252010-05-11T20:07:27.575+06:002010-05-11T20:07:27.575+06:00Вот мне еще интересно, что будет, когда конструкци...Вот мне еще интересно, что будет, когда конструкция:<br /><br />dataContext.Reporters.FirstOrDefault(x => x.Id == id)<br /><br />вернет null?Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-5534722311412811802010-05-11T20:06:19.853+06:002010-05-11T20:06:19.853+06:00@hazzik
+1
Подпишусь под каждым словом :)@hazzik<br />+1<br />Подпишусь под каждым словом :)Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-50701734708565178622010-05-11T20:04:59.076+06:002010-05-11T20:04:59.076+06:00@ankstoo
Шикарно!
Еще добавлю, что модель в MVC с...@ankstoo<br />Шикарно!<br /><br />Еще добавлю, что модель в MVC создается неявно, а обращение к БД происходит в конструкторе в функции InitCollections. В такой ситуации возможны лишние обращение к базе данных.<br /><br />Начали проблемы ковырять, хорошо... ;)Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-8110829382945571052010-05-11T20:04:51.643+06:002010-05-11T20:04:51.643+06:00Во-первых тем, что теперь нельзя создать модель бе...Во-первых тем, что теперь нельзя создать модель без подключения к базе данных.<br />Во-вторых, при смене ОРМ, не дай бог, придется переписывать и эту часть проекта, хотя на первый взгляд с чего-бы это?<br />В-третьих, это просто не тестируется без базы данных.<br /><br />В проблемы можно приписать нарушение принципов проектирования.hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-52000184723352366692010-05-11T19:54:09.499+06:002010-05-11T19:54:09.499+06:00>> Чем например плохо создание Linq2SqlDataC...>> Чем например плохо создание Linq2SqlDataContext в моделе?<br /><br />1. Зависимость от конкретной реализации persistence. <br />Что будет если мы решим сменить L2S на EF а потом на NH? Искать все места и переписывать.<br />2. Вообще зависимость от persistence. <br />Что будет если нам потребуется создать Model без БД - как временный объект или для тестов?ankstoohttps://www.blogger.com/profile/10690746799538408916noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-73938413773948812862010-05-11T19:46:51.497+06:002010-05-11T19:46:51.497+06:00@hazzik
Еще не вечер :)
Ну да чем плохо создание ...@hazzik<br />Еще не вечер :)<br /><br />Ну да чем плохо создание Linq2SqlDataContext в моделе?Alexander Byndyuhttps://www.blogger.com/profile/14185486842573956085noreply@blogger.comtag:blogger.com,1999:blog-458002489272917533.post-85570492645349292522010-05-11T19:29:44.897+06:002010-05-11T19:29:44.897+06:00@Александр
Конечно не все проблемы. Просто кроме м...@Александр<br />Конечно не все проблемы. Просто кроме моего решения других-то и нет:) Не буду же я в этом примере все проблемы решать...hazzikhttps://www.blogger.com/profile/02278053558276208312noreply@blogger.com