-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


двухшаговая инициализация

Понедельник, 03 Августа 2020 г. 21:48 + в цитатник
ЫукпШ:
Цитата Twilight @
... Однако при разрастании кода, об этом можно забыть и все-таки влепить проверки из серии if( m_objectData ).

Это в данном случае будет бесполезно.
Поскольку в классе "AbstractObject" указатель не обнуляется.
---
По моему, ты не о том беспокоишься.
Вот что получится, если в связи с ростом объёма
будет забыта 2-ая строчка ? Вот так:
    IObject *obj = create( type );
    // obj->initialize( objectData );

При этом не инициализированный указатель может иметь любое значение.
---
Также, не удачно выглядит возврат void функцией initialize.
Даже если на первый взгляд функция примитивна.
Но естественно предположить, что однажды, перед присваиванием указателя
захочется проведить правильность данных objectData.
И тогда функция станет не столь примитивна. А указатель может остаться
равным NULL (несмотря на то, что указатель должен быть получен из ссылки) - бессмысленно его использовать,
если данные дефектны. Значение, равное NULL, может служить индикатором "что-то пошло не так".

https://forum.sources.ru/index.php?showtopic=419313&view=findpost&p=3835768

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку