if(null!=variable) pourquoi ne pas s'(variable!=null)
Hi
Dans notre société, ils suivent une règle stricte de comparaison avec des valeurs null. Quand je code
si(variable!=null) dans la revue de code, je reçois des commentaires sur ce changer pour if(null!=variable). Est-il un gain de performance pour le code ci-dessus?
Si quelqu'un l'explique très apprécié.
Merci d'avance
Ne devrait pas être un gain de performances ou de la dégradation de toute façon autant que je sache, pense que c'est juste la façon dont ils aiment à le faire.
Il y a une grande réponse à cette question sur stackoverflow.com/questions/271561/...
Ce style de codage est appelé "Yoda conditions", si vous recherchez, vous trouverez de nombreux exemples et des discussions.
Double Possible de stackoverflow.com/questions/271561/...
Angwenyi: Les réponses il y aura de répondre à cette question, mais il est encore une autre langue.
Il y a une grande réponse à cette question sur stackoverflow.com/questions/271561/...
Ce style de codage est appelé "Yoda conditions", si vous recherchez, vous trouverez de nombreux exemples et des discussions.
Double Possible de stackoverflow.com/questions/271561/...
Angwenyi: Les réponses il y aura de répondre à cette question, mais il est encore une autre langue.
OriginalL'auteur giri | 2011-02-13
Vous devez vous connecter pour publier un commentaire.
Je ne vois pas d'avantage dans la suite de cette convention. En C, où les types boolean n'existe pas, il est utile d'écrire
plutôt que
car si vous oubliez l'un des eaqual signe, vous vous retrouvez avec
qui affecte 5 à la variable et toujours true. Mais en Java, une valeur booléenne est une variable booléenne. Et avec !=, il n'y a pas de raison du tout.
Un bon conseil, cependant, est d'écrire
plutôt que
car elle contribue à éviter les NullPointerExceptions.
Mon conseil serait de demander une justification de la règle. Si il n'y a rien, pourquoi le suivre? Il ne facilite pas la lisibilité.
myString
ne devrait pas êtrenull
(qui en général, il ne devrait pas), alors il est beaucoup mieux pour lancer une exception que de les transporter sur (généralement).Je suis d'accord, il n'y a pas de place pour elle dans Java. Il est tout simplement le code plus difficile à lire.
OriginalL'auteur JB Nizet
Pas de différence de performances - la raison en est que si vous vous habituez à l'écriture
(null == somevar)
au lieu de(somevar == null)
, alors vous ne serez jamais utiliser accidentellement un seul signe égal, au lieu de deux, parce que le compilateur ne permettra pas à elle, où elle permettra d'(somevar = null)
. Ils sont juste une extension pour!=
à assurer sa cohérence.Personnellement, je préfère
(somevar == null)
moi, mais je vois d'où ils viennent.somevar = null
va compiler en unif
condition (sauf si le type desomevar
estBoolean
)Bon je ne sais pas à propos de Java, mais je sais que dans certains de la même façon structurée les langages tels que C ou C++, il va compiler, avec des résultats inattendus. Et les normes de codage ont tendance à avoir le plus de langues similaires pour beaucoup de développeurs.
OriginalL'auteur Joe Enos
C'est un "reste" de l'ancien C-les normes de codage.
l'expression
if (var = null)
serait de compiler sans problème. Mais il serait effectivement affecter la valeur null à la variable donc faire quelque chose de complètement différent. Ce fut la source de très bugs gênants dans les programmes en C.En Java que l'expression ne se compile pas et donc c'est plus une tradition qu'autre chose. Il n'a pas erver n'importe quel but (autre que le codage des préférences de style)
var
estBoolean
.ah droit, redoutable hors-la boxe...
Auto-unboxing. Probablement une erreur de l'OMI.
null
s n'aide pas les choses.OriginalL'auteur a_horse_with_no_name
Cela n'a rien à voir avec la performance. Il est utilisé pour prévenir que vous attribuez accidentellement au lieu de comparer. Une cession
null = var
ne fera pas de sens. Mais en Javavar = null
aussi de ne pas compiler donc la règle de tourner autour n'a plus aucun sens et ne fait que le code moins lisible.Nizet, Vous avez raison. J'ai pensé en C++, permettra de mettre à jour la réponse
OriginalL'auteur Karl von Moor