1
因爲我們知道函數有副作用和/或返回值,而且方法只有副作用。所以對於性能/內存的角度來說,最好在ruby方法結束時返回nil
。我應該總是返回零紅寶石方法?
例如,如果我有,增加了一個哈希像這樣一個現有的哈希值的方法:
def add_to_config(config)
config[:alphabet] = {a: 1, b: 2, c: 3}
end
我們知道,這種方法的返回值是分配的項目,在這種情況下,字母哈希值。現在在這個微不足道的例子看起來不是什麼大問題。但是,如果它是一個大型的複雜數據結構,會發生什麼?
明確返回nil
以防止更大的數據結構被返回是更好嗎?
def add_to_config(config)
config[:alphabet] = {a: 1, b: 2, c: 3}
nil
end
還是真的很重要?因爲它可能只是把一個指針推入堆棧 - 我猜不知道它是如何使用ruby的。
「所以對於性能/內存的角度來說,最好在ruby方法結束時返回零。」你的理由是什麼? – meagar
從我的舊'c'編程日,我知道返回值被壓入堆棧幀並且調用函數需要彈出它們。我會認爲紅寶石的工作方式類似,如果返回零,所有這些推動和流行將被避免,從而減少內存使用,並減少所需的時鐘週期 –
紅寶石是爲程序員的幸福而設計的,雖然有些時候優化很重要,但這可能不是考慮到返回值將被垃圾收集,除非它被分配給一個變量。但是,當方法僅使用副作用時,記錄文檔很有幫助。有一個約定在方法名稱末尾添加一個bang('!'),有些人確實選擇顯式返回nil,但是爲了清晰起見而不是表現。 –