Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/26: Рейтинг темы: голосов - 26, средняя оценка - 4.88
97 / 11 / 1
Регистрация: 14.03.2017
Сообщений: 196

Синглтон и стиль написания кода (теория)

16.02.2020, 17:08. Показов 6506. Ответов 86
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, тут диспут о правильном написании кода.

Я знаю что такое синглтон, для чего он нужен и как реализуется. Однако меня интересует, нужен ли он в самом деле или нет.
В своем движке я написал функции логгинга. Обернул это в namespace, так же обернул в макросы и был счастлив. В реализации другого движка я увидел, что он функции логгинга обернул через синглтон.
Так вот, объясните, если какие-нибудь плюсы у синглтона по сравнению с моим подходом или наоборот минусы моего подхода по сравнению с сингтоном.

З.Ы. Я в курсе, что синглтон - это антипаттерн.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2020, 17:08
Ответы с готовыми решениями:

Стиль написания кода(читабельность и прочее)
Недавно делал тестовое задание для поиска работы, но мне сказали, что код не совсем корректно написан. Задание:Написать рекурсивный и не...

Стиль написания кода
Всем привет! Просматривал исходники Perl и обратил внимание на то, что стиль написания кода который представлен ниже, очень короткий по...

Стиль написания кода
Имеется внешний класс. Внутри этого внешнего класса объявлен private static класс. Клиенты внешнего класса не имеют представления о...

86
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
21.02.2020, 12:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
Кроме того, неосторожность/глупость/злой умысел могут создать столько объектов сколько нужно.
Например, простая передача по значению создаст копию, которая уничтожится автоматически.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
22.02.2020, 01:04
Цитата Сообщение от IGPIGP Посмотреть сообщение
Время жизни - приложение и ни как не сменить или уничтожить.
Отнюдь. Вытираете ссылку (пишете в нее воид, нулл или что там, в зависимости от языка) и уничтожаете объект (или его убирает ГЦ, опять же, в зависимости от языка). Более того - чтобы не нарезать 100500 полей разных типов, достаточно нарезать одно - словарь ключ/значение, где значение это Object (в терминах джавы. в плюсах будет ссылка на воид наверное), и набиваете этот словарь значениями по нужным ключам и удаляете что не надо. И ветвите внутри иерархию словарей как хотите в динамике в рантайме, по определенным ключам кладучи другие подобные же словари.... Опыт динамических языков пролезает изо всех щелей
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.02.2020, 01:12
Цитата Сообщение от _Ivana Посмотреть сообщение
Отнюдь. Вытираете ссылку (пишете в нее воид, нулл или что там, в зависимости от языка) и уничтожаете объект (или его убирает ГЦ, опять же, в зависимости от языка).
_Ivana, мы тут о плюсах же говорим. Поле нельзя уничтожить. Если оно не содержит констант, ссылок... (не помню больше), то можно запустить деструктор и заселить поле размещающим new. Но выбор не велик.
Что же касается структуры, то синглтон может быть ветвист как олень. Если вспомнить Рассела, то он может быть деревом, содержащим все возможные деревья деревьев, не являющихся поддеревьями ни одного дерева. Деревьев. Так кажись...
1
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
22.02.2020, 01:21
Правильно. Но можно выселить объект из поля и очистить занимаемую им память, оставив в поле скромный маленький указатель в воид. И так много раз за время жизни приложения. Не говоря уже о словаре
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.02.2020, 01:32
Цитата Сообщение от _Ivana Посмотреть сообщение
Правильно. Но можно выселить объект из поля и очистить занимаемую им память, оставив в поле скромный маленький указатель в воид. И так много раз за время жизни приложения. Не говоря уже о словаре
Если поле - указатель, то можно. Но об этом была вторая часть:
Цитата Сообщение от IGPIGP Посмотреть сообщение
А если агрегация и закрытые копирующие функции то это синглтон с локальным скоупом. Тут есть профит от более определённого порядка инициализации для различных зависимых объектов.
агрегация это когда ссылка или указатель (время жизни объекта контролируется вручную). Тут можно из фабрики заcелить и не иметь вопросов с копированием и разрушением в неподходящий момент. То есть это остаётся синглтон, но с видимостью - класс Application (или другой владелец вложенный в main).
Первая часть, - это поле-значении. Его нельзя void'ануть. Стандарт говорит, что если объект разрущить то перезаселённый размещающим new объект с точки зрения стандарта - новый объект. Закон относительности плохих формулировок утверждает, что ни какими физическими/ментальными/эротическими опытами нельзя отличить друг от друга плохо дифференциируемые по определению понятия. То есть, невозможно ни когда сказать, является объект новым с точки зрения реинициализации или он таким был всегда. Но существенно не это занудство, а тот факт, что объект занимает память каким бы его не хотел считать стандарт.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
22.02.2020, 01:37
Ну я зря про словарь что-ли писал Создаете один словарь, а потом добавляете/удаляете в него сколько угодно полей-значений по ключам. И при удалении память, используемая для хранения этой пары ключ/значение, очищается.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
22.02.2020, 01:52
Цитата Сообщение от _Ivana Посмотреть сообщение
Ну я зря про словарь что-ли писал Создаете один словарь, а потом добавляете/удаляете в него сколько угодно полей-значений по ключам. И при удалении память, используемая для хранения этой пары ключ/значение, очищается.
Дык и я про деревья о том же. Для управления множеством синглтонов, есть более гибкие приёмы. Это может быть указатель на базовый класс, например. То есть, в рантайме можно подставлять различные реализации убивая старые. Дружественный метод убьёт кого хошь. А может быть времени компиляции полиморфный фрукт (на шаблонах вплоть до CRTP ). А может быть и комбинация (не одна). Варианты есть. Важно то, как организован сам фасад. Он синглтон или он не синглтон? В конце концов, это по сути - просто объект класса. Если ни кому не нужны его свойства, то можно и без него.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2020, 01:52

Стиль написания кода. Отступы
Что лучше: проблелы или табуляция? Ибо поначалу я слышал и был уверен что лучше использвать табуляцию. Но сейчас используя sublime text c...

Оцените на правильность кода и общий стиль написания
Приветствую всех :) В кои-то веки решил начать изучать Java, наткнулся на некий курс, в котором подробно разбирается MVC, а параллельно...

Синглтон вызывает синглтон
Привет. Что-то запутался. Есть Синглтон(надеюсь я его правильно сделал): public class Table extends JTable { private static...

Правила написания кода
Всем привет!Читала о правильном написании кода, отступы, что был "елочкой", но до меня так и не дошло, как это на практике делается. Буду...

Правила написания кода
Я вот до сих пор не понимаю, как происходит такая вещь. Допустим: у меня есть Главная страница сайта <b>index.php</b> и есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
87
Ответ Создать тему
Новые блоги и статьи
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru