LINUX.ORG.RU
ФорумTalks

Я вам тут настоящего сиплюсплюса принес

 , студеные былины


0

1

Решил потыкать один движок, испытав множественные дежавю сравнив с ue4 лончером, но более приятно организованную структуру проекта (без .Net-велосипедов для сборки С++, наконец-то!), но щас не об этом...

Я там рядом «случайно отзыв» о настоящем сиплюсплюсе, странно отдающий известным «комплексом морской пехоты», котрый в программировании вроде как совсем некомильфо, или кто-то обсмотрелся известного кина про, почему-то смешав «Цельнометаллическую оболочку» с цитатой из... фильма про репликантов про «корабли бороздящие большой театр» возле Ориона. Просто цитата:

«Нам нужны бойцы. Не вертикальные вонючие лужи, не «программисты С/С++». Бойцы. Настоящий сиплюсплюс не прощает. Выглядит как игрушка, что девочка забыла на лужайке. Но потом горят боевые корабли на подступах к Ориону. С Шоданом я спокоен за бойцов и их боевой оскал. Потому что Шодан учит главному — убивать и любить свою винтовку. Шодан учит сиплюсплюсу.» (с) какой-то директор со странными тараканами насчет убивать и винтовок, которых нет... Фрейду однако есть что сказать про это. Особенно про «горящие корабли» и «любить винтовку».

А Шодан их такому не учил... наверное:

https://github.com/electronicarts/EAMain/blob/master/source/EAMain.cpp

Ознакомившись, словил множественные фейспалмы. Вот такой вот разрыв между декларациями тараканов в бошках и рефлексиями над выхлопом «бойцов». Видимо поэтому индустрия игор по-прежнему во мгле и особенно Electronic Arts. Дискач.

★★★★★

Последнее исправление: slackwarrior (всего исправлений: 2)
Ответ на: комментарий от A_Stahl

Коротко о понтах EA за «настоящий сиплюсплюс» написанный «не программистами», а «бойцами», когда скурили все корабли:


bool CommandLine::HasHelpSwitch() const
        {
            if((FindSwitch("-help", false, NULL, 0) >= 0) ||
               (FindSwitch("-h", false, NULL, 0) >= 0) ||
               (FindSwitch("-?", false, NULL, 0) >= 0))
            {
                return true;
            }
                return false;
        }

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

EAMain provides a multi-platform entry point used for platforms that don’t support console output, return codes and command-line arguments.

Хрень какая-то. Что она делает-то?

Ты уверен что это релиз? Ты уверен что это вообще настоящий код, а не выхлоп какого-то кодогенератора?

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

Хрень какая-то. Что она делает-то?

EAMain provides a multi-platform entry point used for platforms that don't support console output, return codes and command-line arguments.

Ты уверен что это вообще настоящий код

Сабжевый выс... выхлоп — это децкая херня с булеан экспрешоном и ретурном, которая не проходит кодревью, когда оно есть, а когда там «ковбои»«бойцы» превозмогают перед релизом, вместо программистов — запросто :)

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

Я не могу тебя читать.

Ты наверняка свободный человек свободной страны :) Что делать, знаешь ты.

https://github.com/electronicarts/EAMain/blob/master/source/internal/

Но насчет кодогенератора твоя гипотеза неверна. Это явно «дух старой школы» с явными комментариями про «ассумпшоны», волшебными числами и т.д., содержащий все грабли, по которым прошли ранее, «как не надо делать». И судя по тому, что там ничего не изменилось до 2020-го года, «бойцы» там ничего не делали по принципу «работает — не трогай!» (и держали своего директора в неведеньи о масштабе его на их счет заблуждений, накуривали его «кораблями) :)

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 2)
Ответ на: комментарий от TooPar

Ну не я ж его так назвал :) Я сначала тоже не понял кто это — потом вспомнил забавного чувака с хайлоада что ли, который вроде полнотекстовый движок поиска написал. Меня прост «отзыв» слегка... восхитил количеством упоринума.

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от lenin386

Ну в приведенном примере ретурнов два нафиг не нужно, хватит одного, и if тоже не нужен... Три кола для трех семплов текста — под вопросом :)

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от TooPar

Постой-ка... Это шамашедшый ИИ генерит код для EA? :)

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

Ну достаточно того, что можно в строчку с одним ретурном без if. Или ты не понимаешь о чем я? :) Ну хотя бы:


bool CommandLine::HasHelpSwitch() const
        {
             return ((FindSwitch("-help", false, NULL, 0) >= 0) ||
               (FindSwitch("-h", false, NULL, 0) >= 0) ||
               (FindSwitch("-?", false, NULL, 0) >= 0));
        }

Но тут вообще под вопросом нахрена этот пустометод :) Дальше надо смотреть что там внутри FindSwitch, что мешало три семла в один кол... Может этот метод вообще не родился бы. «Олды» его бы макрой заменили конечно :)

slackwarrior ★★★★★
() автор топика
 virtual bool IsFinished() override { return mResult.wait_for(std::chrono::milliseconds(33)) == std::future_status::ready; }

Почему 33? Это как-то связано с Вагнеровцами? :)

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

Товарищ, даже не смотря на то, что компилятор оба варианта приведёт к одному ассемблерному коду, есть такое понятие, как понятность кода. Код должен хорошо читаться, быть понятным. Например, я очень часто пишу что-то типа f (24+8+8), чтобы отразить, как получается это число. Код вверху ПОНЯТНЕЕ твоего. Зачастую ради понятности и наглядности даже жертвуют прозводительностью.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

Зачастую ради понятности и наглядности даже жертвуют прозводительностью.

Ненене, зачастую эту децкую фигню, которая ничего не добавляет к понятности bool, забывают при отладке, когда не соображают, куда поставить бряку :) Алсо, Шодан вроде как должен был научить их упарываться именно в производительность :) Это не считая конечно что у EA свой велосипед для STL :)

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от lenin386

Товарищ, это не разработка, а хуяк-хуяк и в прод, потому что манагнеру процитированному выше не нужны «программисты», а нужны «бойцы», которые превозмогают :)

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

Ну либо ты знаешь «настоящий сиплюсплюс» или хотя бы стандартный, либо тебе надо чтоб понятнее чем есть в языке было :)

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Ты докапываешься до фигни какой-то, до стиля. Нет здесь криминала, вообще. Вы там совсем поехали, если у вас такой код ревью не проходит.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

Зачастую ради понятности и наглядности даже жертвуют прозводительностью.

Гипотеза хорошая, но Хэнлон учит нас что все проще:

 
   virtual void ReportResult() override
    {
        char output[100];
        EA::StdC::Snprintf(output, EAArrayCount(output), "EXIT(%d)\n", mResult.get());

        // Using OutputDebugStringA directly here as opposed to Report as someone may overload
        // the default reporter. And this is what counts for EARunner to know what to do.
        OutputDebugStringA(output);
    }

Почему 100? Или там понятнее делали, а тут не сделали? :)

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

Почему нет ? Тебе байтов на стеке жалко ?

Не, ты со стороны понятности заходи :) Если не жалко, почему не 256? Или, чего их жалеть, — почему не больше? :) А в понятном коде WTF-ков такого рода быть не должно :)

Такого кода полно, все так пишут.

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

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

Формально не ошибка, просто отступление от идиом языка, да еще и масло масляное. bool и так возвращает true или false, а если в одну строчку можно написать — нафига это метод вообще :) Можно еще придираться — нафига эти больше-меньше для ответа на вопрос «есть и ли нету», но это уже из области «тут пишем понятнее, чем понятно, тут пишем непонятно (потому что бинарный ответ получаем через одно место), тут вообще рыбу заворачивали» :)

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

Да хоть 1024. Вот ублей, ровно 0 проблем я вижу тут. Это же стек, не куча, там разница будет только в цифре, на которую увеличится указатель стека. Вообще ни на что не повлияет.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 1)
Ответ на: комментарий от lenin386

Ты где-то проспал что волшебные числа в коде, если он конечно претендует на «понятность», — это не айс :)

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Ладно, а как иначе ? Забубенить где-то вверху константу, а потом забыть, как она называется, забыть о её существовании ?

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

Забубенить где-то вверху константу

Рядом забубень, по месту :) Чо, от одной строчки которая «ни на что не влияет», но повышает читабельность, руки отвалятся? :) А потом кто-то кто не в курсе почему 100 (или что именно 100, а не 150) будет обрезанные сообщения писать :)

а потом забыть, как она называется

Разупорись и назови понятно :)

, забыть о её существовании ?

Э... код уже пишут не только не программисты, но маразматики, которые не могут прочитать что написано, если это понятно названная константа или комментарий хотя бы «почему 100»? :)

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Можно еще придираться — нафига эти больше-меньше для ответа на вопрос «есть и ли нету»

Но там не вопрос «есть или нету». Там поиск.

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

Нет :) В булевском методе там не поиск, там «тру или фалсе», «есть или нету» :) Поиск это в том, что проверяет. Но и там можно было не копировать STL, написав свой «жутко оптимизированный», но велосипед :)

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 2)
Ответ на: комментарий от deep-purple

Да, это единственно возможный ответ тут :) «Ну значит надо было» :)

slackwarrior ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

Лучший ответ наверное только «присылайте ваши патчи, когда догадаетесь почему 33»

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

будет обрезанные сообщения писать

Так оно и с 2048 обрезаные могут получится. Стек ваще не айс, надо вснпринтф(?) для подсчета кол-ва байт, затем выделять и принтфать, а не вот этот колхоз с константами.

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

Так оно и с 2048 обрезаные могут получится.

Ну там же будет ассумпшон, что ленивым программистам будет в падлу такие длинные писать :)

slackwarrior ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

Так медленнее, и обращение к куче, что приводит к фрагментации. А вообще заострять внимание на такой фигне - ребята, вы явно быдлокода не видели, и не знаете даже близко, что такое куяк и в продакшон. И у вас явно дофига времени на вылизывание того, что в вылизывании не нуждается. В практически идеальном коде изъяны нашли.

lenin386 ★★★★
()
Последнее исправление: lenin386 (всего исправлений: 3)
Ответ на: комментарий от lenin386

А вообще заострять внимание на такой фигне - ребята, вы явно быдлокода не видели,

Почему? Открываешь любой «гейм-движок» — и вот оно :)

и не знаете даже близко, что такое куяк и в продакшон.

Понт не засчитан :) Раньше оно альфой называлось и пока не дорастет до беты, людям стыдились показать. Потом это был POC — «пруф концепта», который иначе как «поцем» никто из авторов не называл. «А чо вы хотите за такие деньги в такие сроки?» Потом «сириус бузинес» рептилоидов с Сириуса понял, что они могут обозвать POC как «MVP» и уже без стеснения выводить эту блевотину «бойцов с Ориона» в прод :) Вместо «программ» теперь «программные продукты». Разница как между «кефиром» и «кефирным продуктом». В большинство модных игор до первого большого патча больно играть :)

И у вас явно дофига времени на вылизывание того, что в вылизывании не нуждается.

«И так сойдет» (с) Речь настоящего «бойца»

В практически идеальном коде изъяны нашли.

Лол, «сам так пишу» вот и все что ты сказал.

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 2)
Ответ на: комментарий от slackwarrior

Ну хотя бы

Оригинальный код имеет преимущество, что если нужно перед возвратом что-то сделать, то не придётся выёживаться. Вангану даже, что там изначально что-то было, а потом убрали. В общем твои теоретические кукареки постфактум в духе «Ньютон лох, я в 7 классе школы это всё знал» вызывают только смех и недоумение.

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

Ну ты понел

Да я то понял, а ты нет. Наверное потому что ты диванный иксперд. Особенно ржу с «если в одну строчку можно написать — нафига это метод вообще».

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

Оригинальный код имеет преимущество, что если нужно перед возвратом что-то сделать, то не придётся выёживаться.

Если нужно

Если ненужно — то не нужен и «оригинальный код». А вот когда будет нужно — когда рак на горе свистнет, года через три и это уже не при авторах оригинальнго кода :)

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

Да я то понял, а ты нет. Наверное потому что ты диванный иксперд.

«твои теоретические кукареки» (ТМ)

Особенно ржу с «если в одну строчку можно написать — нафига это м

етод вообще».

Особенно теоретический твой кукарек — про «ржу» вместо обоснуя нахуя :)

slackwarrior ★★★★★
() автор топика
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Если ненужно — то не нужен и «оригинальный код»

Если так написано, значит зачем-то это было нужно. Причём не всегда это «нужно» имеет именно техническую причину. Да, в общем, я понимаю что тебе хочется самоутвердиться за счёт «лохов» из EA, но тебе самому-то не стрёмно? Ска, завернул if в return, ну писос, срочно иди директором гугла устраивайся. ЛОЛ.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

что там изначально что-то было, а потом убрали

«что-то убирать» нужно или целиком, или не нужно, что за полумеры. Скорее всего ненужно написали, потому что «иф труе фалсе» — это децкая фигня, которой не пишут даже вместо «того что было».

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

Ой-вей, твоей ванге опять неймется. Я не «завернул иф в ретурн», а убрал лишний иф, лалка :) А еще этот «оригинальный метод» с ифом где-то в других ифах потому что булеан :) Мы поместили ифы в твои ифы, потому что... «ну надо было» :)

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

это децкая фигня

Децкая фигня, это твои кривляния. Код валидный, компиляется в одно и тоже. В оригинале проще что-то добавить и это будет адекватно выглядеть в diff-е добавлением одной строчки, а не как переписывание всей функции. В общем, незачёт, приходи осенью.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.