2015-12-27 2 views
2

Кто-то сказал мне разместить все мои строки приложения в const вместо встроенного.Изменить строку, чтобы быть константой

Почему?

Улучшено ли время компиляции? время выполнения? или просто стандарт кода?

пример

вместо написания:

selectSingleNode.InnerText == "SomeString" 

запись

selectSingleNode.InnerText == SOME_CONST 
+0

По умолчанию они не являются 'const'. Вместо этого вы подразумеваете «непреложный»? –

+0

Этот вопрос довольно широк. Вы говорите о струнных литералах? –

+0

Строки, которые я вижу, всегда неизменны.Он сказал мне, что должен писать service.SomeStringManipulation (TEST_CONST); вместо service.SomeStringManipulation ("test"); –

ответ

0

Я видел несколько тестов, где разработчики испытанных время выполнения и IL сгенерированных между использованием сопзЬ и не -строчные строки. Это правда, есть малейший прирост производительности от использования сопза (хотя незначительным, если вы не работаете на НОСС или Уолл-стрит) реальные преимущества:

  1. Вы обеспечиваете ваши ценности неизменны.
  2. Вы определяете литералы в одном месте вместо того, чтобы писать их inline. Если вам нужно изменить значение в будущем, это должно быть проще.

Это не является исчерпывающим, и я очень хочу посмотреть, что публикуют другие. Надеюсь, это по крайней мере помогает.

+2

Он сравнивает 'const' с литералами. Переменные, производительность и изменчивость не являются проблемами. – SLaks

+0

Ваш ответ был полезным! Благодарю. Я тоже беспокоюсь! –

3

Вы бы сделали это исключительно для удобства и удобочитаемости. Использование именованной константы вместо строкового литерала не будет иметь никакого влияния на производительность.

ремонтопригодность

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

читаемость

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

Например, в следующем примере, какую версию вы считаете более понятной?

// string literals 
int startIdx = someString.IndexOf("["); 
int endIdx = someString.IndexOf("]"); 

// vs. named constants 
int startIdx = someString.IndexOf(TAG_START); 
int endIdx = someString.IndexOf(TAG_END); 

Правильно подобранное имя для константы может сделать намерение кода более четким. Но ключ здесь в том, что вам нужно выбрать доброе имя. Слишком часто, я буду видеть вещи, как:

private const string ASTERISK = "*"; // very poor name 

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

Смежные вопросы