Информация об изменениях

Сообщение Re[3]: Никогда не недооценивайте силу по умолчанию от 12.09.2022 11:33

Изменено 12.09.2022 11:36 vsb

Re[3]: Никогда не недооценивайте силу по умолчанию
Здравствуйте, netch80, Вы писали:

vsb>>const. Параметры функций не могут быть mutable вообще.


N>Почему? Я не могу например счётчик попыток принять и уменьшать?

N>(Я понимаю, что скопировать нет проблем, но всё же)

Потому, что это редкий юз-кейс и путает. К примеру в одном из самых популярных codestyle для JS запрещается менять параметры. Фич должно быть как можно меньше. Если это приводит к тому, что в 1% функций ты создашь лишнюю локальную переменную — ну значит так тому и быть. Зато явно будет видно, что ты её создал, она мутабельная и можно отследить её изменения. А с параметрами можно не отслеживать и даже не смотреть на них, ты в 100% случаев знаешь, что они не меняются.

N>Ты серьёзно??


Да.

N>Во всём коде функции используется kptm2, в одном месте kmpt2. Удачи в поиске. Особенно в конце спринта с рычащим тимлидом.


Если это неизменяемая переменная, то второе место не скомпилируется. Если это изменяемая, такой сюжет может пройти (хотя проверки вроде предупреждений о том, что значение присвоено, но не использовано, могут помочь), но изменяемых переменных априори должно быть слишком мало, чтобы это создавало проблемы на практике. Если у тебя это составляет проблему, вкупе с работающими юнит-тестами, ты что-то сильно не так делаешь.
Re[3]: Никогда не недооценивайте силу по умолчанию
Здравствуйте, netch80, Вы писали:

vsb>>const. Параметры функций не могут быть mutable вообще.


N>Почему? Я не могу например счётчик попыток принять и уменьшать?

N>(Я понимаю, что скопировать нет проблем, но всё же)

Потому, что это редкий юз-кейс и путает. К примеру в одном из самых популярных codestyle для JS запрещается менять параметры. Фич должно быть как можно меньше. Если это приводит к тому, что в 1% функций ты создашь лишнюю локальную переменную — ну значит так тому и быть. Зато явно будет видно, что ты её создал, она мутабельная и можно отследить её изменения. А с параметрами можно не отслеживать и даже не смотреть на них, ты в 100% случаев знаешь, что они не меняются.

N>Ты серьёзно??


Да.

N>Во всём коде функции используется kptm2, в одном месте kmpt2. Удачи в поиске. Особенно в конце спринта с рычащим тимлидом.


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

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