2012-03-09 114 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 2012-03-09 00:28:31

回答

0

聽起來像定義像你所建議的常量是一個好主意,很可能在Transport類中。

雖然將它合併到一個位置使得長期管理更容易,但它還可以幫助防止在您偶然拼錯其中一個單獨的@"ground"@"air"實例時出現的錯誤。

例如,如果在您檢查傳輸類型的其中一個類中發生意外拼寫錯誤@"air"@"iar",則代碼不會按照您的預期行事,也不會產生任何警告或錯誤。通過使用定義的常量,您可以在編譯器的幫助下確保正確拼寫已定義的常量。例如,您無法將TransportAir拼寫爲TransportIar,因爲編譯器在嘗試編譯時會發出錯誤。

1

如果你在很多地方使用String,那麼創建一個常量並回顧一下,主要是因爲如果你像你提到的那樣改變它,而不是硬編碼每個實例。如果您只在幾個地方使用該字符串,則可能不需要。真的,這是一個風格決定。

1

從代碼維護的角度來看,這可能是一個好主意 - 特別是如果您稍後可能會更改這些文字。如果這些字符串用於向用戶顯示,並且您認爲將來可能要將您的程序翻譯成多種語言,則這一點特別有用。

如果您只打算使用這些文字一次,或者不打算改變它們,那麼這可能不是一個好主意,因爲將代碼放在很多不同的地方會使代碼更加困難讀取比如果字符串常量是直接內聯的。

如果您問是否對最終計劃有任何影響,答案是否定的。在這兩種情況下,文字都被放到字符串池中,程序將從那裏加載它,無論是內聯字符串常量還是其他地方定義爲字符串常量。