2017-10-20 26 views
-1

Im travaillant un taux de compression et je remarqué que j'ai un « Cast redondant » dans cette ligne:Coulée redondante dans Visual Studio

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

De toute évidence divisant les deux longueurs de tableau sans coulée de doubler ne renverra que le nombre entier composant du numéro.

Mais pourquoi cette distribution est-elle redondante? Avoir un seul lancement sur une longueur supprime l'avertissement.

À ma connaissance si nous avions:

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

ou

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

wouldnt qui provoquent alors potentiellement un autre développeur pour obtenir confus au sujet de ce que la valeur est calculée ici.

Il me semble que le fait d'avoir une distribution implicite peut causer des problèmes de lisibilité du code. Surtout dans les calculs plus complexes d'une ligne (ce qui est vraiment une autre question de lisibilité). Je pensais également que les valeurs de moulage sous différentes formes produisaient des résultats différents selon l'endroit où la coulée est faite dans l'équation.

+1

Bien qu'il soit redondant, c'est-à-dire que l'ajout ou la suppression de cette conversion n'a aucun effet sur le résultat. La redondance n'a aucun rapport avec la lisibilité dans ce cas. En outre, le fait qu'il soit redondant ne signifie pas que c'est une mauvaise chose nécessaire. – Evk

+0

Je vote pour fermer cette question hors-sujet parce que c'est une question "Je n'ai pas le manuel" –

Répondre

1

En tant que développeur, je peux dire que

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

ou

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

ne me confondre. Je recoginze ce "modèle":

  1. opération Division
  2. Un opérande est casté à double

Alors, je comprends, ce second opérande et le résultat sont doubles. Et je (en tant que développeur) n'ai pas besoin d'un second opérateur de casting.

+0

Je suppose dans ce cas - son subjectif à l'expérience des développeurs dans le codage et aussi la langue que vous utilisez. – Gelion

+0

@Gelion Je pense que certaines expériences subjectives sont devenues standards, comme les conventions de nommage, etc. – Backs