tag:blogger.com,1999:blog-8596733192274108952.post8995371717605000233..comments2024-03-12T06:00:18.305+02:00Comments on Programming stuff: RAII в C#. Локальный Метод Шаблона vs. IDisposableSergey Teplyakovhttp://www.blogger.com/profile/14300835272589262297noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-8596733192274108952.post-58800384937329040942019-06-07T20:14:52.822+03:002019-06-07T20:14:52.822+03:00Раньше я постоянно не мог придумать на какую тему ...Раньше я постоянно не мог придумать на какую тему сделать сайт. Больше всего мешал страх быть неконкурентоспособным и проблема нехватки тем для контента. Сейчас я делаю проще. Нахожу сайт, который очень понравился по тематике, идее и содержанию, на основе него ищу <a href="https://www.templatemonster.com/ru/" rel="nofollow">темы для сайтов</a>, появляются идеи, как сделать такой же сайт, только лучше.PoLhttps://www.blogger.com/profile/05323574612481187404noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-71508050940731071462019-06-07T20:13:55.993+03:002019-06-07T20:13:55.993+03:00Этот комментарий был удален автором.PoLhttps://www.blogger.com/profile/05323574612481187404noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-62102722464605427232014-04-14T11:11:01.426+03:002014-04-14T11:11:01.426+03:00Да, я имелл ввиду суждение Эрика, сорри не уточнил...Да, я имелл ввиду суждение Эрика, сорри не уточнил. Да, я согласен, что мы наблюдаем именно процесс эволюции. Очень понравилось высказывание Вячеслава: "Не нравится - надо было придумать что-нить понятнее using". LastExilehttps://www.blogger.com/profile/11330638859714678015noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-68954884787930530432014-04-14T10:52:34.439+03:002014-04-14T10:52:34.439+03:00Миш, ты имеешь ввиду категоричность Эрика?
Просто...Миш, ты имеешь ввиду категоричность Эрика? <br />Просто я с тобой согласен, что сейчас уже семантика using именно такая, как ты описал - это определение контекста, что является более общим понятием, чем управление ресурсами, которое закладывалось в эту штуку изначально. Но и такой процесс эволюции тоже вполне нормален и естественен. Ведь template metaprogramming в C++ - это целиком и полностью использование инструмента не по своему исходному назначению. Так было всегда и будет, что люди будут использовать инструменты не только так, как было задумано, но и немного иначе, что лишь положительно сказывается на развитии комьюнити и инструментов.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-2083761012290447612014-04-14T09:36:52.122+03:002014-04-14T09:36:52.122+03:00Мне кажется, что категоричность суждения что хорош...Мне кажется, что категоричность суждения что хорошо, а что плохо - это тоже не совсем корректно. <br />Думаю, что имеет логику следующее суждение: блок using можно использовать для определения некого контекста исполнения и это уже может быть как работа с файловой системой, подключением к БД или же просто рисованием на битмапу. LastExilehttps://www.blogger.com/profile/11330638859714678015noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-17938749512553636582014-03-19T20:03:08.466+02:002014-03-19T20:03:08.466+02:00В ASP.NET MVC ведь тоже это используется в хелпера...В ASP.NET MVC ведь тоже это используется в хелперах <br />using(Html.BeginForm())<br />{<br />}Павлhttps://www.blogger.com/profile/04581618990535646991noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-84754488010079915392014-03-14T12:41:43.319+02:002014-03-14T12:41:43.319+02:00Подход с public static void WithReadLock(this Read...Подход с public static void WithReadLock(this ReaderWriterLockSlim rwLock, Action action) неудобен в отладке, да и лишнией стек энтри порождает, что тоже не всегда приятно.<br />Еще более неприятно то, что начинается локальная путаница с захватом скоупа.<br /><br />Все-таки чем дольше я в шарпе тем больше скучаю по некоторым прелестям с++, особенно когда приложения сложные и используют тяжелые неуправляемые ресурсы в полностью управляемом окружении...Anonymoushttps://www.blogger.com/profile/03999939535124861861noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-27468206797563953842014-03-13T21:04:25.795+02:002014-03-13T21:04:25.795+02:00Александр, а вам спасибо за отзывы.Александр, а вам спасибо за отзывы.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-53798038089499312912014-03-13T21:00:25.247+02:002014-03-13T21:00:25.247+02:00Интересная статья. Понравилось очень примеры и сти...Интересная статья. Понравилось очень примеры и стиль написания. Было интересно почитать. Спасибо.sonyks2007https://www.blogger.com/profile/14831102534098601572noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-83241870485157988902014-03-12T21:29:30.014+02:002014-03-12T21:29:30.014+02:00@Ruslan: да, это отличный пример. В Rx-ах для упра...@Ruslan: да, это отличный пример. В Rx-ах для управления отпиской используется Disposable-объект-маркер, который отписывается от источника событий при вызове Dispose. Очевидно, что это тоже нарушает рекомендацию Эрика, ведь отписка от события явно является "побочным эффектом", которое не имеет никакого отношения к управлению ресурсами.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-7251639054270644592014-03-12T21:15:59.787+02:002014-03-12T21:15:59.787+02:00>>Так, хотя Эрик Липперт не рекомендует испо...>>Так, хотя Эрик Липперт не рекомендует использовать Disposable-объекты и блок using не для освобождения ресурсов, такой подход действительно активно используется, причем не только сторонними разработчиками, но и разработчиками Microsoft.<br /><br />Стоит еще взглянуть как IDisposable используется в Rx http://www.introtorx.com/content/v1.0.10621.0/20_Disposables.html<br />там диспозеблов на все случаи жизниRuslanhttps://www.blogger.com/profile/07475454976741228377noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-70831157567812553072014-03-12T20:33:24.456+02:002014-03-12T20:33:24.456+02:00Да, в этом случае дополнительных накладных расходо...Да, в этом случае дополнительных накладных расходов практически не будет.<br />Останется вопрос, насколько использование IDisposable-объектов подходит для этих целей, но это уже вопрос вкуса и стиля, а не эффективности.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-4103377884744103402014-03-12T09:02:10.527+02:002014-03-12T09:02:10.527+02:00Вариант с методом, что предлагает Эрик, плох одним...Вариант с методом, что предлагает Эрик, плох одним: из анонимного метода, например, из-под лока, нельзя сделать return. Остаётся try/finally, а он неудобен с точки зрения композиции - для случая, когда нужно "захватить" несколько объектов (то есть изменить сразу несколько состояний). Посему Disposabe.Create наше всё :о)) Не нравится - надо было придумать что-нить понятнее using :о))Anonymoushttps://www.blogger.com/profile/11725153141467656623noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-13678966841136185122014-03-12T08:20:38.272+02:002014-03-12T08:20:38.272+02:00>>Методы расширения, возвращающие Disposable...>>Методы расширения, возвращающие Disposable-объекты тоже реализованы с помощью анонимных методов, но в случае проблем мы всегда сможем легко от них отказаться.<br /><br />C точки зрения производительности лучше реализовывать IDisposable структурой и метод UseReadLock должен возвращать эту именно эту структуру (естественно реализовывать её нужно ручками, а не передачей лямбды). Такой код будет практически равен по производительности варианту с try finally, поскольку у нас не будет лишних выделений памяти и боксинга.jack128https://www.blogger.com/profile/06241586079811572654noreply@blogger.com