170 похожих чатов

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

почему так говорят?

18 ответов

27 просмотров

может там речь про "чем меньше глобальных переменных"?

Это в целом спорно конечно, переменных нужно столько сколько нужно для решения конкретной задачи, как бы это странно не звучало

Konstantin Meshcheryakov
но если можно избежать?

Если можно избежать без каких то костылей то лучше меньше чем больше, если это не ухудшает опять же сложность алгоритма и ещё желательно внешний вид кода

Konstantin Meshcheryakov
локальных

Тут как зависит от ситуации, какие то локальные переменные дешёвые, какие то нет

Konstantin-Meshcheryakov Автор вопроса
Denis P
Тут как зависит от ситуации, какие то локальные пе...

как узнать хорошо это или плохо? почему говорят. что это плохо?

Сомнительное какое-то утверждение. В теории если размер объекта ну уж очень большой, то его на стеке (давайте без занудства про то, что стека нет в стандарте С++)) речь о прикладном использовании) хранить может и не выйдет (переполним стек). На практике я с таким за несколько лет не встречался. Был один раз, когда статический анализатор ругался на вероятное переполнение, но там действительно стрёмный объект был, его оптимизировал потом Наверно из теоретической возможности переполнить стек и идёт эта мысль. В частности, много-много переменных может рано привести к переполнению стека, хотя почему-то никто не ругается на рекурсию и множество вложенных вызовов, которые так же стек поджирают. На деле же есть вот что. Во-первых, компиляторы сейчас умные, - умеют оптимизировать ненужные переменные и многое другое. Во-вторых, совет этот даже несколько вредный. Переменные позволяют документировать код. Вот такие вещи плохо читаются: if ( obj.IsAvailableForAction() && is_other_condition_satisfied ) Так понятнее (ясно, что семантически в условии ожидается): const bool is_everything_great = \ obj.IsAvailableForAction() && is_other_condition_satisfied; if (is_everything_great)

Georgy Firsov
Сомнительное какое-то утверждение. В теории если ...

Приходи в ядро, 24кб стека в твоем полном распоряжении :))

Georgy Firsov
Сомнительное какое-то утверждение. В теории если ...

Полностью согласен. Например, вызов метода элемента вложенного контейнера вида database.at("key").at(0).do_smth(arg1, arg2, ..., argN) абсолютно нечитаем. Гораздо лучше: const auto& bucket = database.at("key"); const auto& entry = bucket.at(0); entry.do_smth(arg1, arg2, ..., argN)

Vlad
это всегда так было?

~12кб на x86, ~24 на x64... На Windows. После Longhorn (Vista) точно так, насчет более ранних не уверен

Стикер

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта