2009-02-18 42 views
1

我開始的項目中大部分時間都是將字符串寫入代碼。許多字符串可能只在少數地方使用,但一些字符串在許多頁面中都很常見。什麼時候重構字符串文字很好用?

這是一個很好的利用我的時間來重構文字常量,因爲該應用程序是非常成熟和運行良好?這樣做的長期利益是什麼?

回答

1

只有當這個項目需要在未來得到支持時,這是一個很好的利用時間。如果您將定期維護/擴展該系統;不過,這是一個好主意。

1)字符串文字存在很大程度的風險,因爲通常只能在運行時檢測到單個拼寫錯誤。減少運行時錯誤的風險是一個嚴重的優勢,因爲它們可能令人尷尬/令人沮喪。如果它們被用來引用另一個系統(比如表名,服務器名等),那麼當它們被其他系統名稱改變時,它們可能非常難以更新。集中它們,這是一個微不足道的問題。

+1

我接受了這個答案,因爲他給出了重構原因的原因。我在我的問題中提到的應用程序不需要國際支持(在我的問題中我沒有提到),但這也是一個很好的理由,以及3的規則。 – 2009-02-19 16:42:12

1

如果一個字符串在多個地方使用,請重構它。如果只在一個地方使用它,請保持獨立。

5

要考慮的一個常見問題是i18n。如果你(或者你的無用之輩)想要在墨西哥或法國等地銷售你的產品,那麼你將會意識到在整個代碼庫中散佈的文字字符串而不是

編輯:我意識到這並不直接回答你的問題,所以我投了一些其他答案重新:三的規則,等等。我知道你正在談論現有的代碼庫,所以現在談論從一開始就併入i18n有點遲了。當你從一開始就習慣於做這件事時很容易。

3

我喜歡在重構時應用三條規則。如果發生三次或更多次,則代碼需要更新。

1

如果您重構了所有常用字符串,則可以更輕鬆地對其進行國際化/翻譯。如果他們全都在屬性文件中,或者無論您的語言是什麼,那更容易。

1

這是一個很好的利用我的時間將文字重構爲常量,因爲該應用程序已經很好建立和運行良好?

不,你最好不要這樣。

這樣做會帶來什麼樣的長期效益?

如果沒有人碰過那個代碼,好處是沒有。

你可以做什麼,但是避免添加新的文字。但我幾乎要離開現有的方式。

你可能可以在你的空閒中更好地重構它們以更好地睡覺。

可能還有一些其他bug已經需要您的關注。改正這些。

最後,如果你管理你添加「重構」到你的任務列表,請繼續!

0

最好讓睡狗躺下。如果你需要改變使用十八次的字符串,是的,繼續,並把它變成一個常量的地方。如果你發現自己在一個可以固定字符串的模塊中工作,如果你喜歡,可以這樣做。但是通過整個應用程序將所有字符串更改爲常量...應該在待辦事項列表的最底部。

1

我與JMD同意,只要記住,有更多的不是改變字符串國際化(貨幣,UI必須adpated爲從右到左的語言等)

即使您沒有希望在你的應用程序中,重構你的字符串會很有用,因爲那個字符串今天只用了一次,明天可能會重複使用幾次,如果硬編碼的話,你可能不知道它,並且在整個地方複製字符串。

相關問題