2012-03-09 2 views
0

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

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 
} 

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

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

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

+1

Звучит хорошо для меня. – 0x8badf00d

ответ

0

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

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

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

1

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

1

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

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

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

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