2010-07-07 55 views
1

我正在爲特定的XML結構創建一個解析器,而且我正面臨着一個可能的硬編碼問題。這裏:這是硬編碼嗎?我怎樣才能避免它?

private function filterDefaultParams($param){ 
    #FIXME Hardcoding? 
    return array_key_exists('default',$param); 
} 

字面'默認'是Xml結構中的有效標記,這是硬編碼嗎?我可以使用其他技術來搜索默認標籤嗎?

我考慮過使用文檔類型,但是,如何指定默認值爲'default'?

也許不是硬編碼,因爲這個標籤是我的標準。

謝謝你的幫助。

+0

「硬編碼」不是固有的「壞」,而不是因爲正確的理由而完成的,就像數據永遠不會改變並且只用於一個地方一樣。 – 2010-07-07 16:41:18

回答

1

它是否硬編碼?是。

這就是說,你需要權衡一些因素。首先,考慮聲明和跟蹤各種常量所需的附加代碼的「默認」屬性名稱的可能性。

要考慮的另一件事是一致性。如果你有其他地方的屬性名稱可能會改變,那麼你會想要使用所有的常量。

在另一方面,使用?XML或「編碼」一常數的時間,那些衆所周知/定義良好的項目浪費......

ONT他其他另一方面,是可能性的錯別字。當你使用一個常量時,你有編譯時支持來確保你所說的任何地方「DEFAULTPROPERTY」在任何地方或任何地方都是正確的。而使用字符串處理方式意味着問題可能不會在運行時顯示出來,或者直到它們發生在您的代碼的一個小部分。

我想所有這一切都是圍繞着說「使用常量」的方式。

+0

我一直在想'爲XML使用常量...是浪費時間......'我同意你的觀點,我發現了根本問題(當你寫出熟悉的/定義好的)時,我的XML模式不是充分定義,這就是爲什麼我關心未來的問題。 我會爲XML結構提出更強的設計並降低風險。謝謝。 – juanjosegzl 2010-07-07 17:23:29

5

我用我的程序做了很多XML解析,而我通常做的是創建一個包含標籤名稱的常量,並用它來代替。這樣,如果XML標籤發生變化,您只需在一個地方而不是在代碼中的任何地方更改您的字符串。

+0

-1如果XML語法發生變化,那麼您將不得不對一個字符串進行更改。 – 2010-07-07 16:45:26

+0

通過語法,你指的是結構?當然,這會涉及更多的工作而不是更改字符串。我只提到要更改的標籤名稱。如果這個xml文檔是由其他人生成的,他們決定更改一個特定的標籤名稱,那麼常量就派上用場了,因爲您只需要在一個地方更改字符串值,而不是遍佈整個代碼。 – 2010-07-07 16:53:18

+0

我發現問題是不夠好的設計。閱讀我對答案的評論。 – juanjosegzl 2010-07-07 17:24:10

相關問題