我發現自己編程的功能比迭代更多,而且經常編寫重複計算的函數。例如,不錯的編程習慣 - 哪個更高效?
function DoThis(a)
if something(a) - another(a) - yetanother(a) > 0 then
return something(a) - another(a) - yetanother(a)
else
return 0
end
end
我這樣做了很多,如果結果不會被使用超過幾次。一般來說,將計算分配給變量是否更高效?
function DoThis(a)
local x = something(a) - another(a) - yetanother(a)
if x > 0 then
return x
else
return 0
end
end
我明白在這種情況下,差異可能是微不足道的,但我感興趣的開發從一開始良好的生活習慣,並作爲東西堆積和複雜化,差異可能是相當大的。
「我明白在這種情況下的差異可能可以忽略不計,」那麼,這取決於。 a)編譯器/解釋器是否可能只計算一次? [只有在知道沒有副作用的情況下才是合法的] b)被調用函數的代價如何?如果被調用的函數沒有副作用[並且結果很小,如果語言使用延遲評估],則始終保持安全並將結果分配給本地,以便只需計算一次。 –
我不確定lua在這個頻譜上的位置。但我喜歡這種安全的聲音! – ridthyself
我寧願'return math.max(0,something(a) - another(a) - yetanother(a))''沒有額外的變量。 –