... Однако при разрастании кода, об этом можно забыть и все-таки влепить проверки из серии if( m_objectData ).
Это в данном случае будет бесполезно.
Поскольку в классе "AbstractObject" указатель не обнуляется.
---
По моему, ты не о том беспокоишься.
Вот что получится, если в связи с ростом объёма
будет забыта 2-ая строчка ? Вот так:
IObject *obj = create( type );
// obj->initialize( objectData );
При этом не инициализированный указатель может иметь любое значение.
---
Также, не удачно выглядит возврат void функцией initialize.
Даже если на первый взгляд функция примитивна.
Но естественно предположить, что однажды, перед присваиванием указателя
захочется проведить правильность данных objectData.
И тогда функция станет не столь примитивна. А указатель может остаться
равным NULL (несмотря на то, что указатель должен быть получен из ссылки) - бессмысленно его использовать,
если данные дефектны. Значение, равное NULL, может служить индикатором "что-то пошло не так".