Использование String Constant - PullRequest
0 голосов
/ 09 марта 2012

У меня есть ссылки на земля и воздух в нескольких файлах.Обычно он используется в этом контексте, но не всегда.

if ([transport.type isEqualToString:@"ground"]) {
  // do something for automobiles
}
else if ([transport.type isEqualToString:@"air"]) {
  // do something else for planes
}
else {
  // we don't care
}

Должен ли я использовать строковые константы для представления ground и air , поэтому, если я когда-либо изменю ихбуквально, я просто обновляю его в одном месте?например,

NSString * const TransportGround = @"ground";
NSString * const TransportAir = @"air";

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

Ответы [ 3 ]

1 голос
/ 09 марта 2012

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

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

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

1 голос
/ 09 марта 2012

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

0 голосов
/ 09 марта 2012

Похоже, было бы неплохо определить константы, как вы предложили, скорее всего, в классе Transport.

Хотя его объединение в одном месте облегчает долгосрочное управление, оно также может помочь предотвратить ошибки, которые могут возникнуть, если вы ошиблись в написании одного из этих отдельных @"ground" или @"air" экземпляров.

Например, если в одном из классов, где вы проверяете тип транспорта, и вы случайно набрали @"air" как @"iar", код не будет работать так, как вы ожидаете, и при этом не будет генерироваться предупреждение или ошибка. Используя определенные константы, вы получаете помощь компилятора, чтобы убедиться, что вы правильно написали определенные константы. Например, вы не могли бы записать TransportAir как TransportIar, так как компилятор выдаст ошибку при попытке компиляции.

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