Почему для bada не требуется scoped_ptr?

В руководстве по стилю/архитектуре bada C++ используется двухэтапная инициализация объектов C++.

Почему они просто не потребовали использования scoped_ptr?


person user239558    schedule 09.11.2011    source источник
comment
Его следует назвать плохим руководством по стилю C++... Кто в здравом уме использует необработанные указатели, которым что-то принадлежит?   -  person Xeo    schedule 09.11.2011
comment
Интересно, Bada придумали изгнанники с Symbian?   -  person Steve Jessop    schedule 09.11.2011
comment
@Xeo: не волнуйтесь, у них есть чистый политика владения, которая должна решить проблему... вздох   -  person Matthieu M.    schedule 09.11.2011
comment
@MatthieuM: суффиксы в именах функций? Его определенно изобрели изгнанники с Symbian!   -  person Steve Jessop    schedule 09.11.2011
comment
На тему двух- фаза инициализации.   -  person Xeo    schedule 09.11.2011
comment
Я нуб здесь в С++, поэтому я не знаю общего. Но... ребята, вы вообще думаете, что двухэтапная инициализация хуже оригинала? Я имею в виду хуже, чем разработка приложений для Android на Java или приложений для iPhone на Object-C. Будет ли bada удобна разработчикам по сравнению с андроидом?   -  person user482594    schedule 21.12.2011


Ответы (2)


Вы должны спросить их, потому что я не экстрасенс.

Однако я подозреваю, что их ответ будет таким же, как написано жирным шрифтом в верхней части этой страницы: «Без двухэтапного построения происходит утечка ресурсов».

Однако я не согласен с этой оценкой; реальная проблема заключается в том, что их тело конструктора ComplexClass не защищено от исключений. С учетом этого код будет гораздо более надежным при использовании простого RAII, особенно при его масштабировании.

С точки зрения «почему они просто не потребовали scoped_ptr»: я полагаю, что это документ C++03, в котором говорится о C++, а не о сторонних библиотеках.

person Lightness Races in Orbit    schedule 09.11.2011
comment
Я вижу, что вы пишете, что нет веских технических причин против scoped_ptr, за исключением того, что это не C++03. Я вижу, что его нет и в С++ 11. Но в С++ 11 должно быть что-то вроде scoped_ptr, не так ли? - person user239558; 09.11.2011
comment
@ user239558: Нет, не то, что я могу придумать. Что касается того, почему они не написали об этом, я не понимаю, почему вы думаете, что мы могли бы вам сказать. Спроси их! Это их руководство по стилю. - person Lightness Races in Orbit; 09.11.2011
comment
@ user239558: C++11 имеет unique_ptr, что похоже на scoped_ptr, но подвижно. - person Steve Jessop; 09.11.2011
comment
@Tomalak: еще одна странность в этом документе: в правильном коде они проверяют возвращаемое значение new на нулевое значение. Но в своем неверном коде они утверждают, что сбой выделения может помешать вызову деструктора ComplexClass, что означает, что они думают, что исключение будет выброшено из new и, следовательно, из конструктора. Так что либо у них нестандартный new, который испортит их стиль кодирования, требуя проверки пояса и скобок, либо тот, кто написал руководство по стилю, окончательно запутался. - person Steve Jessop; 09.11.2011

Объем не является причиной для двухэтапного строительства. Тот факт, что у конструкторов нет другого способа вернуть ошибку, кроме исключения, и они не используют исключения (ИМХО, единственная причина в том, что они думают, что это все еще 10 лет назад).

person Jan Hudec    schedule 09.11.2011