2011-07-29 113 views
2

我想知道重構這個最好或最正確的方法。初學者重構問題

series = Hash.new 
series[:series_id] = doc.xpath("Data/Series/id").inner_text if not doc.xpath("Data/Series/id").nil? 

回答

6
series = { :series_id => doc.xpath("Data/Series/id").try(:inner_text) } 
+1

DigitalRoss是正確的,正是我想要的。 'try'函數可以創造奇蹟。 – ardavis

+0

這是一個不錯的。雖然表現稍有不同:它會一直添加':series'鍵。效果在大多數情況下是相同的。如果密鑰未定義,'series [:series_id]'也將返回'nil',除非它們明確地測試了密鑰的存在。 – nathanvda

4

喜歡的東西

series = Hash.new 
id_element = doc.xpath("Data/Series/id") 
series[:series_id] = id_element.inner_text unless id_element.nil? 
+6

在最後一行說「if id_element」而不是「除非id_element.nil? – gregspurrier

0

我覺得最革命性的重構將使用XML映射到對象庫就像happymapper,並留下所有的引擎蓋下這骯髒的實施細則。