2017-10-20 230 views
-1

進出口工作了壓縮比,我注意到,我在這條線「冗餘演員」:冗餘鑄造

double ratio = (double)data.Length/(double)comp.Length; 

顯然分割兩數組的長度沒有鑄造翻一番僅返回整數數字的組成部分。

但是爲什麼這個鑄造是多餘的?

僅在一個長度上投射一次長度就會消除警告。

我的理解是,如果我們有:

double ratio = (double)data.Length/comp.Length; 

double ratio = data.Length/(double)comp.Length; 

難道不認爲那麼可能會導致另一個開發者感到困惑的就是在這裏被計算出什麼樣的價值。

它與我有接觸,隱式強制轉換會導致代碼可讀性問題。特別是在更復雜的一行計算(這實際上是另一個可讀性問題)。

我也認爲鑄造值不同形式會產生不同的輸出,這取決於鑄造在方程中的位置。

+1

那麼它是多餘的,即 - 添加或移除該投射對結果沒有影響。在這種情況下,冗餘與可讀性無關。此外,這是多餘的事實並不意味着它是必要的壞事。 – Evk

+0

我在投票結束這個問題作爲題外話,因爲它是一個「我沒有手冊」的問題 –

回答

1

作爲一個開發者,我可以說,

double ratio = (double)data.Length/comp.Length; 

double ratio = data.Length/(double)comp.Length; 

永遠不會讓我困惑。我recoginze這個 「模式」:

  1. 除法運算
  2. 一個操作數是鑄造於double

所以,我明白了,那第二個操作數和結果是雙。而我(作爲開發人員)不需要第二位演員。

+0

我想在這種情況下 - 它對開發者在編碼方面的經驗以及你使用的語言的主觀性。 – Gelion

+0

@Gelion我認爲,一些主觀經驗成爲現場標準,如命名約定等 – Backs