我正在爲正在爲Ruby中使用的工具編寫一些API的組中工作。編寫API方法時,我的許多團隊成員使用散列表作爲方法的唯一參數,而我用指定的每個值編寫我的方法。使用哈希表作爲函數輸入
例如,一個類蘋果的定義爲:
class Apple
@commonName
@volume
@color
end
我會實例化類方法:
Apple.new(commonName, volume, color)
我的隊友們會寫這樣的方法看上去像:
Apple.new({"commonName"=>commonName, "volume"=>volume, "color"=>color)
我不喜歡使用散列表作爲輸入。對我來說似乎不必要的龐大,並沒有增加任何清晰的代碼。雖然在這個例子中看起來並不算什麼大問題,但我們的一些方法有超過10個參數,並且通常會有哈希表嵌套在其他哈希表中。我還注意到以這種方式使用哈希表在公共API中非常少見(net/telnet是我現在能想到的唯一例外)。
問題:我可以給我的團隊成員什麼樣的參數,以便不使用散列表作爲輸入參數。代碼的龐大程度並不充分(他們不害怕編寫200-400字符行),並且過多的內存/處理開銷將不起作用,因爲它不會成爲我們的工具使用方式的問題。
你已經碰到了後期語言的一個問題:約束參數的唯一方法是命名它們。在ruby中命名參數的唯一方法是發送一個大的舊的blobby哈希表。你有我的同情心。 – 2009-11-24 20:37:02