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

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

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

18 ответов

25 просмотров

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

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

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) точно так, насчет более ранних не уверен

Стикер

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
5
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта