Преимущества констант - PullRequest
14 голосов
/ 26 марта 2010

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

По сути, у меня есть программа, которую компилятор говорит, что конкретная переменная не изменилась и, таким образом, может быть объявлена ​​константой, я просто хотел знать, какая польза от добавления к ней квалификатора константы, если она Разница в том, что внесение этого изменения не добавляет ценности, и, следовательно, нет смысла тратить время (этот сценарий происходит более чем в одном месте), возвращаясь и «исправляя» все эти переменные.

Ответы [ 14 ]

2 голосов
/ 26 марта 2010

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

Еще один большой пример использования констант - это постоянные объекты. Имея постоянный объект (или давая ссылку на постоянный объект в функции), вы можете быть уверены, что ваш объект не изменен, и разрешено вызывать только методы (называемые const методами) этого объекта. Однако это верно для C ++, я не уверен, что такая же концепция действует и в Ada.

2 голосов
/ 26 марта 2010

Одним из преимуществ является то, что если оно действительно является постоянным значением, вы бы случайно не изменили его. Константа не дает вам испортить вещи позже. В качестве переменной любой может прийти и изменить ее позже при обновлении кода.

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


Пример из реальной жизни из моей юности:

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

1 голос
/ 26 марта 2010

Константы обычно хранятся в постоянной памяти, что предотвращает их изменение во время выполнения, и доступ к ним может быть быстрее или, по крайней мере, так же быстро, как доступ к ОЗУ.

0 голосов
/ 26 марта 2010

Константы являются неизменяемыми значениями, которые известны во время компиляции и не изменяются в течение жизни программы.

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

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

...