Как стать автором
Обновить

Комментарии 11

жаль, что это просто перевод. Хотелось задать непосредственному автору вопрос: а более сочных, незаезженных и профессиональных правил не нашлось? Просто компания немаленькая, кода наваяли много, а профстандарт (если судить только по тому, что написано в статье) какой-то жиденький...

Правила где ставить ++ уровня прошлого века, если честно. Это ж какого уровня должны быть разработчики, которых так легко сломать не той формой оператора ++. Это при том, что насколько я знаю о Банджи, у них реально хорошая продумананя архитектура движка. А это куда важнее в какой форме используются операторы. А уж восхищаться хорошим неймингом ... На самом деле создаётся чувство, что эти правила писал новичок, недавно пришедший в компанию. Disclaimer: Кто автор статьи не копал. Просто не интересно.

используйте постинкремент (‪index++, а не ++index)
* и & должны располагаться рядом с именем переменной, а не именем типа (int32 *my_pointer, а не int32* my_pointer)
Единственный оператор return в конце функции
Избегайте применения Standard Template Library для кода игры


Странно, а в заголовке «С++».

А кто-то ещё использует = без пробела для присваивания?

int var= 123;

bool x= (var == 123);

Я одно время так писал несколько лет, по собственному наитию, с той же целью, визуального разделения присваивания и сравнения. Потом, получив обратную связь от команды в виде полного непонимания подобной эстетики, стал писать "как обычно".

int var = 123;

bool x = (var == 123);

НЛО прилетело и опубликовало эту надпись здесь

А с какой примерно версии стандарта инициализация с «=» считается устаревшей и не рекомендуется к использованию, особенно для простых типов вроде int? Где-то ещё видел мнение, что так делается в большинстве языков программирования, к этому все давно привыкли и это наиболее простой вариант (очевидно неправильное, но нужны аргументы).

НЛО прилетело и опубликовало эту надпись здесь

При всем уважении к Мейерсу, это его особое мнение, или таки в стандарте есть рекомендации? И опять же при всем уважении к особому пути великого С с двумя большими плюсами, во всех подобных языках «int x = 123» это более чем обычная, привычная и нормальная форма записи выражения при объявлении переменной с нужным нам значением.

Вот что с 11 стандарта поменялось, так это интерпретация выражений а-ля «T object = {other};», в связи с обнаружением фатального недостатка в ранее существующих интерпретациях, не позволяющих сделать понятную list initialization, но это уже совсем другая история. В итоге конечно всё получилось, главное выбрать один правильный из 15-ти вариантов и нигде не ошибиться.

б) на самом деле зачастую создаёт временный объект, а потом вызывает конструктор копирования

На самом деле в большинстве случаев срабатывает copy elision и ничего вышеописанного не происходит, разве что вы скомпилировали с -O0, тогда получите exactly как написали, со всеми вытекающими, и это скорее всего точно не то, что ожидается получить, не только при инициализации, а вообще везде по всему коду будут страшные вещи происходить.

НЛО прилетело и опубликовало эту надпись здесь

Если кому интересно, по поводу ++ - его расположение может в зависимости от устройства ЦПУ оказывать влияние на производительность, причём с разных сторон, так например у предстоящего(++var) достоинство в том, что итоговый машинный код выходит короче(2 против 3 приказов у послестоящего) и на бесконвеерной системе будет быстрее, но в тоже время - у конвееризованных ЦПУ быстрее может отрабатывать послестоящий ++, т.к. не будет возникать зависимости по данным в машинном коде и цепочка приказов отработает без остановки и сброса конвеера.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории