冗余铸造

冗余铸造

问题描述:

进出口工作了压缩比,我注意到,我在这条线“冗余演员”:冗余铸造

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

我在投票结束这个问题作为题外话,因为它是一个“我没有手册”的问题 –

作为一个开发者,我可以说,

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

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

永远不会让我困惑。我recoginze这个 “模式”:

  1. 除法运算
  2. 一个操作数是铸造于double

所以,我明白了,那第二个操作数和结果是双。而我(作为开发人员)不需要第二位演员。

+0

我想在这种情况下 - 它对开发者在编码方面的经验以及你使用的语言的主观性。 – Gelion

+0

@Gelion我认为,一些主观经验成为现场标准,如命名约定等 – Backs