Константа против неизменной переменной? - PullRequest
1 голос
/ 18 сентября 2011

Есть ли преимущество использования константы (неизменяемой), чем просто не изменять переменную?

Ответы [ 4 ]

1 голос
/ 18 сентября 2011

Делая значение постоянным, компилятор может просто заменить его. Например, если у вас есть x / 2, компилятор может вычислить значение и использовать его вместо того, чтобы выдавать код, чтобы получить значение x, а затем разделить его на 2.

Кроме того, вам не нужно беспокоиться о случайном изменении значения. Например, в C-подобных языках вы можете случайно набрать if (x = 2), когда вы имели в виду if (x == 2), что изменит значение x, если это переменная.

1 голос
/ 18 сентября 2011

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

1 голос
/ 18 сентября 2011

В зависимости от вашего языка и компилятора константа может быть встроена и оптимизирована при сборке.Переменные, скорее всего, будут занимать место в стеке, даже если оно никогда не изменится.

0 голосов
/ 18 сентября 2011

В некоторых языках программирования объявление чего-либо постоянным позволит компилятору выполнять оптимизации, которые в противном случае были бы невозможны.Кроме того, объявление чего-либо постоянным может быть полезным способом документирования того, что в коде есть места, которые могут быть повреждены при изменении значения.

К сожалению, некоторые языки программирования иногда делают плохие вещи с вещами, которые объявленыпостоянная.Например, в некоторых языках .net, если тип значения, который объявлен только для чтения, передается по изменяемой ссылке, компилятор вместо того, чтобы отказываться разрешить такое действие, вместо этого создает копию и передает ее.Такое неявное копирование ухудшит эффективность и может привести к неожиданной семантике.

...