LINUX.ORG.RU

Мне кажется или с этим C++ кодом что-то не так?

 ,


0

3

Смотрю код библиотеки для описания документации API Blueprint. Вижу такое https://github.com/apiaryio/snowcrash/blob/master/src/MSON.h#L338-L355 Мне кажется или так не стоит делать? Для этого есть union-ы или наслеование какое-нибудь, но добавлять все поля в структуру, а потом в комментах писать, что используй либо это, либо это - не самое верное решение.

P.s. я не настоящий C++ программист, может тут так принято и это нормально?

А ты имя автора видел? Pavan Kumar Sunkara - типичное индусское имя, а ты еще про код спрашиваешь

Pro100User
()

Автор типичный индус, удивляться нечему. Ну есть прямо в сердце закололо от такого, отправь ему патч.

Meyer ★★★★★
()

Это ты очень тонко намекнул, что winapi не торт :)

pon4ik ★★★★★
()

С любым кодом на С++ что-то всегда не так.

anonymous
()

По-хорошему, стоило сделать эти поля приватными и через методы разруливать логику.

union тут никаким боком. Ибо он не гарантирует обращение к реальному типу. Скорее std::variant, которого ещё нету.

Но в целом код так себе. Особенно доставляют бессмысленные комментарии. Документация ради документации.

RazrFalcon ★★★★★
()

С этим кодом всё не так, но union плохая альтернатива для этого. Union - это привет из Си со всеми соответствующими граблями. В C++ для этого придумали (уже стандартные) variant и any.

asaw ★★★★★
()

может тут так принято и это нормально?

Ну в общем да. Как ни крутись, а Variant на крестах это всегда либо такой ручной выбор типа, либо тормозной dynamic_cast.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

А кто это сказал, что dynamic_cast тормозной? Что касается выбора типа, то, если типов много, в С++, как правильно заметил OP, используется ООП.

asaw ★★★★★
()
Ответ на: комментарий от asaw

ну по сравнению с switсh он таки тормозной. Другое дело, что если у тебя он прям критичен, то вообще все по другому нужно делать.

anonymous
()
Ответ на: комментарий от annulen

там указатель, скорее всего, безо всяких юнинонов

next_time ★★★★★
()

наслеование какое-нибудь

This. Кому-то было очень лениво описывать 6 классов вместо одного.

Suigintou ★★★★★
()
Ответ на: комментарий от Suigintou

Вообще-то автор явно в курсе про Sum types, возможно хаскеллист. Зря вы так

yoghurt ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.