<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937255</guid>
        <pubDate>Mon, 09 Mar 2026 05:54:29 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937255</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=473966&view=findpost&p=3937020'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Felan &#064; <time class="tag-quote__quoted-time" datetime="2026-03-03T18:19:27+03:00">03.03.26, 15:19</time></span><div class='quote '>Правильно убеждали.<br>
&quot;Заранее аллоцирован&quot; и &quot;Синглтон&quot; вообще никак не связаны.</div></div><br>
Вот тут да, я боюсь - надо согласиться&#33; :lol: Ибо очень часто сама инициализация данных синглтона происходит, скажем так, lazy. А именно - при первом к нему обращении. И то, что он объявлен глобально - совсем не значит, что он &quot;построен&quot; <strong class='tag-b'>полностью</strong> в первую очередь&#33;]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937254</guid>
        <pubDate>Sun, 08 Mar 2026 19:48:35 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937254</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=473966&view=findpost&p=3937252'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2026-03-08T16:00:49+00:00">08.03.26, 16:00</time></span><div class='quote '>Хм. Если принимать архитектурные решения как можно позже, ничего так и не будет написано.</div></div><br>
Мне кажется, что ты упускаешь &quot;как можно&quot; в том предложении :) <br>
Принимаешь тогда, когда уже нельзя не принять. Но как можно позже, потому что ты будешь иметь больше знаний. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2026-03-08T19:49:39+00:00">08.03.26, 19:49</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=473966&view=findpost&p=3937252'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2026-03-08T16:00:49+00:00">08.03.26, 16:00</time></span><div class='quote '>Однако можно писать так, чтобы архитектурные изменения могли бы легче интегрироваться в имеющийся код.</div></div><br>
:good:]]></description>
        <author>D_KEY</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937252</guid>
        <pubDate>Sun, 08 Mar 2026 16:00:49 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937252</link>
        <description><![CDATA[Qraizer: Хм. Если принимать архитектурные решения как можно позже, ничего так и не будет написано. Однако можно писать так, чтобы архитектурные изменения могли бы легче интегрироваться в имеющийся код.<br>Синтетически. Вот у нас синглтон, заменяющий глобальный объект. Вот функция, возвращающая ссылку на него и используемая для получения доступа к синглтону. На первом вызове она его создаёт, на последующих возвращает уже созданные экземпляр. Типичная и простая реализация. У меня так испытательный стенд устроен. Он напичкан разными шелесками: от генератора аналоговых сигналов в широком диапазоне частот и напряжений до ARINC и CAN. Их реализуют как раз сигнлтоны и представляющие их классы, т.к. конфигурация стенда определяется файлом параметрических данных, и там же определяются характеристики сигналов управления и наблюдения. Бац&#33; понадобилось добавить новый CAN. Хорошо, если это другая шелеска, для неё напишется свой класс и свой синглтон, но вот если такая же, то упс. Ну и ничего страшного: как-нибудь вводим их идентификацию, пусть и просто индексами, заменяем синглтон CANа на мап CANов с ключём-идентификатором, в функцию доступа вводим параметр – и вуаля. Написать код, по-новому парсящий параметрический файл, всё равно пришлось бы, а ошибки компиляции выявят все места запроса синглтона.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937251</guid>
        <pubDate>Sun, 08 Mar 2026 11:29:48 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937251</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=473966&view=findpost&p=3937024'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2026-03-03T20:39:10+00:00">03.03.26, 20:39</time></span><div class='quote '>Если объект глобальный, однако его характеристики могут стать известны только в ран-тайм, синглон хорошее решение. Проблемы будут, если глобальный объект исходно был неверным архитектурным решением.</div></div><br>
Проблема в том, что некоторые изменения сложно предсказать заранее в архитектуре. <br>
<br>
А люди почему-то склонны принимать архитектурные решения как можно раньше (а надо, наоборот, принимать их как можно позже).<br>
<br>
В итоге делают тот же синглтон, а потом от него отказаться сложно становится. Ещё хуже, если вместо рефакторинга костыли строят.]]></description>
        <author>D_KEY</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937250</guid>
        <pubDate>Sat, 07 Mar 2026 21:49:46 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937250</link>
        <description><![CDATA[Felan: Вот это конечно не С++, но мне кажется проблема на лицо.<br>
<br>
<a class='tag-url' href='https://habr.com/ru/articles/1006782/' target='_blank'>Очередной &quot;Паттерн&quot;.</a><br>
<br>
Хотя лично я не сичитаю что такие вещи следует называть паттернами. Это скорее архитектура. Ну да ладно.<br>
<br>
И лично я твердо убежден, что в данном случае автора и подельников надо принудительно лечить.]]></description>
        <author>Felan</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937024</guid>
        <pubDate>Tue, 03 Mar 2026 20:39:10 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937024</link>
        <description><![CDATA[Qraizer: Если объект глобальный, однако его характеристики могут стать известны только в ран-тайм, синглон хорошее решение. Проблемы будут, если глобальный объект исходно был неверным архитектурным решением.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937020</guid>
        <pubDate>Tue, 03 Mar 2026 15:19:27 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937020</link>
        <description><![CDATA[Felan: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=473966&view=findpost&p=3936944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2026-03-03T01:55:21+00:00">03.03.26, 01:55</time></span><div class='quote '>И всеж ... хочется вернуть обсуждение в русло топика ...<br>
Давайте обсудим, к примеру, &quot;синглтон&quot;. Говорят - практика так себе. А мне вот для хранения &quot;глобального конфига&quot; очень даже нравится. Предлагайте варианты лучше </div></div><br>
<br>
Синглтон это не структурный паттерн. Он ни хороший ни плохой. Он отлично решает специфические задачи и очень плохо когда им пытаются решить задачи которые не должны им решаться. Ключевое слово &quot;НЕ должны&quot;. Потому что они могут им быть решены в значительной степени.<br>
<br>
Просто любой проект в течении своей жизни изменяется, и то, что в начале было одной задачей, и хорошо решалось синглтоном, например, со временем может трансформироваться и стать по сути другой задачей, которая уже не рашается синглтоном. И проблема тут в том, что синглтон очень &quot;жесткий&quot;, его очень сложно зименить. Он глобальный.<br>
<br>
Пример из жизни.<br>
<br>
Андроид. Приложение которое общается со сканером. Изначально один из типов сканов мог загружаться и на разных экранах можно было смотреть всякие его параметры. И все было хорошо, пока через несколько лет не понадобилось загружать два разных скана этого типа для обработки и сравнения.<br>
<br>
И вдруг оказалось, что вся логика загрузки&#092;рассчетов завязана на синглтон которые еще и промежуточные данные кеширует, и просто невозможно просто взять и сделать еще одну копию.<br>
<br>
Да, там много вопросов и других. Но суть в том, что изначально все можно было сделать без синглтона, тогда тупо бы продублировали все дерево объектов и были бы счастливы.<br>
<br>
Тут дело не в самом синглтоне как таковом. Дело в том, что его очень сложно модифицировать когда он пророс во все места проекта.<br>
<br>
Это как с наследованием. Лучше его избегать. Так в этом случае, лучше было не делать синглтон, тем более, что никих особых преимуществ он не дает тут. Глобальный объект можно и без него создать.<br>
<br>
Этот паттерн нужен когда момент создание объекта не контролируется напрямую. Как например бин в апаче (откуда, как я понимаю, и растут ноги синглтона). А если объект создается &quot;напрямую&quot;, то смысла в синглтоне просто нет. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2026-03-03T15:30:49+00:00">03.03.26, 15:30</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=473966&view=findpost&p=3937006'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2026-03-03T13:54:14+00:00">03.03.26, 13:54</time></span><div class='quote '>А их нет. Вот как бэ на одном из собесов меня убеждали что это антипаттерн. А вот на текущем проекте, где все завязано на реалтайме и доступ к данным должен быть фиксированным по времени и заранее аллоцирован - это единственный вариант.<br>
Синглетон - хороший паттерн, когда нет другого варианта. Фабрика - это основа COM объектов. Вопрос в необходимости использования того или иного паттерна. Не надо убиваться в теорию, практика всегда тебя стукнет по носу.</div></div><br>
<br>
Правильно убеждали.<br>
&quot;Заранее аллоцирован&quot; и &quot;Синглтон&quot; вообще никак не связаны.<br>
<br>
Все можно сильно заранее аллоцировать и без синглтона (ну правда есть всякие фреймворки разной кривизны которые могут требовать этого, но тут про это не сказано, поэтому мы про общий случай)<br>
Синглтон нужен когда объект создается в неконролируемом контексте и он обязан быть в одном экзепляре. (как например всякие Java Beans и модули Apache)<br>
Если момент создания конролируется напрямую, то и синглтонить смысла нет.]]></description>
        <author>Felan</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937006</guid>
        <pubDate>Tue, 03 Mar 2026 13:54:14 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3937006</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=473966&view=findpost&p=3936944'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Majestio &#064; <time class="tag-quote__quoted-time" datetime="2026-03-03T01:55:21+00:00">03.03.26, 01:55</time></span><div class='quote '>И всеж ... хочется вернуть обсуждение в русло топика ...<br>
Давайте обсудим, к примеру, &quot;синглтон&quot;. Говорят - практика так себе. А мне вот для хранения &quot;глобального конфига&quot; очень даже нравится. Предлагайте варианты лучше  :)</div></div><br>
А их нет. Вот как бэ на одном из собесов меня убеждали что это антипаттерн. А вот на текущем проекте, где все завязано на реалтайме и доступ к данным должен быть фиксированным по времени и заранее аллоцирован - это единственный вариант.<br>
Синглетон - хороший паттерн, когда нет другого варианта. Фабрика - это основа COM объектов. Вопрос в необходимости использования того или иного паттерна. Не надо убиваться в теорию, практика всегда тебя стукнет по носу.]]></description>
        <author>sharky72</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936944</guid>
        <pubDate>Tue, 03 Mar 2026 01:55:21 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936944</link>
        <description><![CDATA[Majestio: И всеж ... хочется вернуть обсуждение в русло топика ...<br>Давайте обсудим, к примеру, &quot;синглтон&quot;. Говорят - практика так себе. А мне вот для хранения &quot;глобального конфига&quot; очень даже нравится. Предлагайте варианты лучше  :)]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936942</guid>
        <pubDate>Mon, 02 Mar 2026 19:55:32 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936942</link>
        <description><![CDATA[Qraizer: Та это и нынче несложно сделать при желании.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936939</guid>
        <pubDate>Mon, 02 Mar 2026 16:47:17 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936939</link>
        <description><![CDATA[Majestio: Я помню, достаточно давно, когда я еще практически не был знаком с паттернами проектирования, я встретил прикольный гифчик. Который &quot;повествовал&quot;, как из обычного &quot;Hello world&quot; можно наваять инфраструктуру из порядка 10 классов, формально обвязать избыточностью. И все строго по мануалам проектирования по шаблонам, и не подкопаешься&#33;&#33;&#33;  :wacko: <br><br>Там &quot;формально&quot;  оценивались условия и перспективы - и также формально применялись паттерны проектирования.<br><br>Очень обидно, что тогда я просто посмеялся - а гифчик надо было бы сохранить&#33;<br><br> :yes-sad:]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936863</guid>
        <pubDate>Sat, 28 Feb 2026 17:11:52 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936863</link>
        <description><![CDATA[sharky72: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=473966&view=findpost&p=3936851'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2026-02-27T15:00:34+00:00">27.02.26, 15:00</time></span><div class='quote '>В одном предложении о паттернах я бы резюмировал, что о них знать полезно, но гораздо полезнее знать об антипатернах.</div></div><br>
Некоторые антипаттерны - сложно выявить. Особенно если проект очень большой. А паттерны - это если честно нужны только на собесах. Большая часть и так используется в повседневной жизни или большинстве фреймворков. Знать надо чтобы сказать что это использовал ;) Хотя для меня наиболее сложным и важным был принцип подстановки Liskov, его труднее всего соблюдать и очень часто хочется нарушить.<br>
<br>
P.S. Принцип KISS тоже очень важен ;)]]></description>
        <author>sharky72</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936851</guid>
        <pubDate>Fri, 27 Feb 2026 15:00:34 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936851</link>
        <description><![CDATA[Qraizer: В одном предложении о паттернах я бы резюмировал, что о них знать полезно, но гораздо полезнее знать об антипатернах.]]></description>
        <author>Qraizer</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936850</guid>
        <pubDate>Fri, 27 Feb 2026 14:52:03 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936850</link>
        <description><![CDATA[Felan: О, холиварчик :)<br><br>С моей т.з. никогда&#33;<br><br>Думаю что в этом и заключается профессиональный опыт.<br><br>С моей т.з. сами по себе они оверхеда никакого не приносят. Ну т.е. типа если ты умеешь ими пользоваться, то от того, что ты не будешь их использовать быстрее и лучше ты не седлаешь.<br><br>Это как если ты умеешь забивать гвозди идеально, ты их просто забиваешь, не думая о том, что хм... тут можно его забить неидеально, я сэкономлю наносекунду&#33;<br><br>Вопрос применимости паттернов заключается в том, будешь ли ты забивать шурупы.<br><br>И вот тут всплывают опыт, профессионализм и знания: ты точно можешь отличить шуруп от гвоздя? А точно можешь правильно выбрать где нужны гвозди а где шурупы?<br><br>Но это требует серьезного образования и опыта.<br><br>Если ты фронтендер все бытие которого ограничено одной страницей у тебя нет еще 3-х человек которые ее тоже развивают, у тебя просто не будет никогда нужды в паттернах. Ну может че-нить самое простое только.<br><br>Я бы сформулировал так, это нажно если оно решает какую-то проблему.<br><br>Часть из них простые и рашают простые проблемки, и нужны всегда, типа принципа единственной ответственности, есть специфичные, например команда, которые сильно не всегда нужны, есть спорные, типа синглтона или монстрообразные типа MVVM.<br><br><br>Если это не раашет никакой конкретной проблемы, то это лишнее.<br><br>А проблемы очень специфичны для проекта. В одном это может быть проблемой, а в другом тоже самое может не быть проблемой. И поэтому жизнь сложна. :)<br><br><br>В целом, если серьезно.<br>Систематизированность должна быть всегда.<br>Каноничности не должно быть никогда, мы не в церкви.<br>Шаблоны проектирования это известный способ решить известную проблему. А так же пусть упростить общение между программистами. Один говорит у нас тут обсервер, и всем все понятно.<br><br>ПСЖ Для меня стало открытием что современные недоучки вообще не в курсе, что кроме MVVM и синглтона есть еще множество других шаблонов. Они про это просто не знают.]]></description>
        <author>Felan</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936787</guid>
        <pubDate>Fri, 27 Feb 2026 03:26:10 +0000</pubDate>
        <title>Антипаттерны в проектировании</title>
        <link>https://forum.sources.ru/index.php?showtopic=473966&amp;view=findpost&amp;p=3936787</link>
        <description><![CDATA[Majestio: Буэнос ночес, амигос&#33;<br>
<br>
Всем известно, что определённые приёмы программирования привносят в процесс проектирования определённые ништяки. Сорян, но вынужден дать линки на свой собственный сайт:<br>
<br>
<ul class="tag-list"><li><a class='tag-url' href='https://majestio.info/articles/design-patterns-cheat-sheet.html' target='_blank'>Шпаргалка по шаблонам проектирования</a></li><li><a class='tag-url' href='https://majestio.info/articles/s.o.l.i.d-cpp.html' target='_blank'>S.O.L.I.D на примерах С++</a></li><li><a class='tag-url' href='https://majestio.info/articles/solid-on-gof-design-patterns.html' target='_blank'>S.O.L.I.D на шаблонах проектирования GoF</a></li></ul><br>
Но вопрос&#33; А когда это и в каких случаях это желание систематизированности и каноничности привносит неоправданный оверхед?<br>
Какие для этого признаки? И что делать в таких случаях?]]></description>
        <author>Majestio</author>
        <category>C/C++: Прочее</category>
      </item>
	
      </channel>
      </rss>
	