Почему Resharper предпочитает consts по только для чтения?

Я заметил предложение Resharper при "Общих Методах и Улучшениях Кода": Преобразуйте локальную переменную или поле к константе.

Я также заметил что в книге Bill Wagner "Эффективный C#: 50 Особенных методов Улучшить Ваш C#" существуют идиома языка, "Предпочитают только для чтения константе", в котором авторе объясняют риски использования consts.

Мой вопрос не о различиях между только для чтения и константой и когда использовать их, но почему один источник поместил константу как обычную практику / улучшение кода и в другой руке, вторые обработки, только для чтения как идиома?

12
задан Dariusz Woźniak 24 September 2019 в 07:36
поделиться

2 ответа

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

9
ответ дан 2 December 2019 в 22:03
поделиться

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

И автор этой книги в основном утверждает, что, используя readonly вместо const, вы можете избежать необходимости перестраивать зависимые сборки, если измените значение readonly . . Напротив, для изменения на const вам придется перекомпилировать зависимые сборки для новой версии сборки с const .

Это законный аргумент, однако, если значение не будет меняться в течение всего срока службы приложения, я все же думаю, что лучше использовать const . Мне нравится использовать readonly для значений, которые я загружаю из конфигурации, например, которые не изменятся после инициализации в конструкторе.

Я думаю, что гораздо лучше иметь ясность кода, которую обеспечивает const , возможно, за счет небольшой дополнительной поддержки компиляции.

2
ответ дан 2 December 2019 в 22:03
поделиться
Другие вопросы по тегам:

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