2013-11-22 51 views
0

考慮下面計算而傳遞參數

功能的variable y唯一用途是將其作爲參數傳遞給類變量的另一個目的的構造。

在進行函數調用期間直接計算值或將其存儲在變量中時,它被認爲是好的還是不好的做法?延長問題,可以說我們有object foomembers x and y,我會叫新Variable(foo.x, foo.y)?或將它們分別存儲foo.xfoo.y,然後撥打new Variable(x, y)

private static Variables getVariables(double product, double sum) { 
     // using reduced quadratic equation. 
     double x = (sum/2) - Math.sqrt(((sum/2) * (sum/2)) - product); 
     double y = sum - x; 
     return new Variables(x, y); 

     /* 
     * Question: 
     * is it good practice/bad practice to compute while calling function ? 
     * return new Variable (x, sum - y); 
     */ 
    }  
+0

我誠實地認爲兩者之間的差異很小。我會說這一切都取決於你的哲學和編碼風格 – sircapsalot

+2

如果說'新的變量(x,sum - y)'是不好的做法,那麼說'Math.sqrt(((sum/2)*(sum/2)) - product)'。 :P雖然這都是個人喜好的問題。如果代碼清晰,我會說任何一個都沒問題。 – cHao

+2

如果你使用好的變量名,它首選計算,然後傳遞變量。通過這種方式,您可以向讀者提供該價值是什麼的暗示。此外,如果出現問題,異常會指出您遇到問題。對於第二個問題,我不認爲只提取調用變量(x,y)的foo.x和foo.y是好的。 – holap

回答

1

正如在您的問題的評論中提到的,任何方式的返回是可以接受的。

在我曾經有過的課上,我們不得不更正式地考慮哪種方式更具可讀性。通常這意味着我們最好使用您發佈的原始代碼,而不是您的註釋版本。

不過,我覺得都是完全可讀,只是請你不要做這樣的事情:

return new Variable((sum/2) - Math.sqrt(((sum/2) * (sum/2)) - product), sum - x); 

這顯然是更難視覺處理,所以要計算在返回到最低限度。其原因不僅僅是爲了您自己的理解,而在於其他程序員可能正在查看您的代碼的問題。