powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция инициализации или исключение в конструкторе?
10 сообщений из 60, страница 3 из 3
Функция инициализации или исключение в конструкторе?
    #40050522
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чукча ТС не читатель. Он писатель....
и первый раз видит кнопку Настройки - По умолчанию
LOL)))
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050524
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Он спросил. Что предпочтительнее.

Я думаю что оба варианта плохие. Но мне нравится более атомарный вариант класса конфигурации
когда конструктор делает 100% подготовительной работы и не падает.
вот где в этом посту ты говоришь о настройках по умолчанию что он тебя цитирует?
Удивительно как 3 страницы люди ни о чем говорят.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050525
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Предложи ему статический метод класса возвращающий экземпляр себя.
Там будет проверки в первых строках и потом конструктор.
Уж эти 3 варианта удовлетворяет любого новичка
- coctructor
- init
- static createInstans
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050621
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статический метод? Зачем. Он не добавляет ничего к тому что было уже сказано.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050632
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Статический метод? Зачем. Он не добавляет ничего к тому что было уже сказано.
а в каком варианте это метод
авторУ нас есть два варианта для инициализации и обработки ошибок:

1) Функция инициализации возвращающая признак ошибки.
2) Или исключение вылетающие из конструктора.
В первом или втором?
Или ТС такой косноязычный?
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050648
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не хочу сильно погружаться в эту тему. По ней мало инфы. Нет даже названия этого класса.
А все теоретики ООП говорят о том что имя - должно быть звучащим. Оно должно значить.
Например "Properties" или "PropertyParser". В зависимости от этого другие ответы по дизайну
класса могут обрести смыл. А там мы пока обсуждаем шкуру медведя которого еще нету.

Для случая с *Parser функция возвращающая опционал или Maybe<> может быть и была-бы полезна.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050658
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну, если ТС спорит с нужностью default настроек и переменных, то
это вообще за гранью)))))
Удачи аффтару!
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050800
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
По ней мало инфы. Нет даже названия этого класса.

Я придумал выход из ситуации, который меня устраивает. Дело в том, что класс настроек
у меня болтается не просто так, а управляется повторно-используемым классом синглетона.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
template <...>
class Singleton {...};
class Options {...};

const bool IsAllowDefault = false;
Singleton<Options, IsAllowDefault> opt;

opt.init(path);
int v = opt->getMyValue();


Класс Options в конструкторе только заполняет все настройки дефолтными значениями. И
класс Options реализует функцию init(). Но если IsAllowDefault == false в целом синглетон
ведёт себя так, как будто из конструктора Options при ошибке вылетело исключение. А если
IsAllowDefault == true, то синглетон ведёт себя так, как будто была вызвана функция init().

Т.е. двумя вариантами реализации из моего первого поста я управляю настраивая класс
Singleton. И могу легко переключаться между поведениями: 1) исключение из конструктора
2) вызов функции init().

Приятно, то что функция Options::save() вызывается в классе Singleton. Т.е. в классе Options
не нужно следить за тем, а были ли мы успешно загружены, а если были то в деструкторе
Options вызовем save(). И виртуальный метод Options::save() нужно было вызывать именно в
деструкторе клиентского класса Options, этот метод нельзя было вызывать в деструкторе
базового класса OptionsBase, по понятным причинам. Теперь деструктор Options пустой.

И теперь всем жизненным циклом управляет класс Singleton и поведение настраивается
через шаблонные параметры этого класса.
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050815
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ужас.
Синглетон счас наверно только сишники остались используют)
...
Рейтинг: 0 / 0
Функция инициализации или исключение в конструкторе?
    #40050818
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
авторТ.е. двумя вариантами реализации из моего первого поста я управляю настраивая класс
Singleton. И могу легко переключаться между поведениями: 1) исключение из конструктора
2) вызов функции init().
Вообще то это решается не в рантайме и не набегу, а во время написания кода.
...
Рейтинг: 0 / 0
10 сообщений из 60, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция инициализации или исключение в конструкторе?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]