Оптимизация памяти: объявить несколько строковых переменных вместо использования на месте

Мне нужно закодировать класс с большими соображениями распределения памяти.

У этого класса есть строки повсюду, например так

var data = GetPropertyValue<GSData>(response.BaseData, "scriptData");

Так же, как "scriptData", более 10 строк объявлены "на месте".

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

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

Мои вопросы:

  • Какая будет разница в потреблении памяти?
  • Как насчет резервирования памяти с использованием const вместо использования «на месте»?

Мне нужно понять, что делает компилятор, когда строки типа "textA" определены в нескольких местах класса (в нескольких методах), что происходит в памяти при запуске программы и т.д.

Спасибо!


person UndercoverNoob    schedule 26.11.2018    source источник
comment
Нет разницы в потреблении памяти из-за интернирование строк строковых литералов. Но есть разница в ремонтопригодности. Используйте константу, если они означают одно и то же.   -  person Tim Schmelter    schedule 26.11.2018
comment
Использование const — хорошая практика, но с точки зрения того, сколько памяти это сэкономит? Моя догадка почти нулевая.   -  person Ross Miller    schedule 26.11.2018
comment
Волшебные струны - это зло. Как предлагают другие - используйте хотя бы константы.   -  person Renatas M.    schedule 26.11.2018
comment
@Reniuz: строковый литерал - это не волшебство, это очень читабельно и понятно. Но часто их следует заменять константами, перечислениями, методами или локализованными строками.   -  person Tim Schmelter    schedule 26.11.2018
comment
@TimSchmelter Когда вы используете одну и ту же строку 10 раз в коде и это влияет на поведение приложения, я думаю, что это волшебная строка ... или я неправильно понимаю, что такое волшебная строка: /   -  person Renatas M.    schedule 26.11.2018
comment
@Reniuz imo a magic String — это строка, которая появляется без видимой причины, например, волшебное событие jQuery, которое создает ее на стороне клиента. Если вы используете строковый литерал, это вовсе не волшебство. Но вы правы в том, что вы не должны повторять один и тот же элемент несколько элементов и использовать общую переменную/константу, конфигурацию, метод или что-то еще, что может его вернуть.   -  person Tim Schmelter    schedule 26.11.2018
comment
@TimSchmelter Ну, волшебная строка - это строковый литерал. Googled для объяснения магической строки. Пара хороших результатов здесь и здесь объясняется, что я называю магической строкой.   -  person Renatas M.    schedule 26.11.2018
comment
@Рениуз; Я вижу, куда вы направляетесь. Что ж, тогда, возможно, вы правы, хотя термин магические строки обычно относится к скрытым значениям, которые запускают определенные функции, то есть пользовательский ввод, который, по вашему мнению, пользователь никогда не предоставит (например, пасхальное яйцо или вход в режим отладки приложения). В этом случае дверь открывает магическая строка.   -  person Tim Schmelter    schedule 26.11.2018
comment
Спасибо, ребята! Я пытался искать перед публикацией, но не знал, как задать вопрос.   -  person UndercoverNoob    schedule 26.11.2018