Qui a de meilleures performances: test! = Null ou null! = Test
Considérer les deux lignes de code suivantes
if (test ! = null)
et
if (null != test)
Est il n'y a aucune différence dans les deux rapports ci-dessus, la performance sage? J'ai vu beaucoup de gens à l'aide de la plus tard, et quand on les interroge, ils disent ses meilleures pratiques avec pas de raison solide.
source d'informationauteur Sandeep Nair
Vous devez vous connecter pour publier un commentaire.
Pas de différence.
Deuxième est simplement parce que le C/C++ où les programmeurs toujours fait d'affectation au lieu de comparer.
E. g.
Alors que java compilateur va générer d'erreur de compilation.
Donc, personnellement, je préfère le premier à cause de la lisibilité, les gens ont tendance à lire de gauche à droite, qui se lisent comme
if test is not equal to null
au lieu denull is not equal to test
.Ils sont exactement les mêmes. La seconde, on peut faire sens lorsque l'aide est égal à:
ne peut jamais jeter un
NullPointerException
considérant ce qui suit:peut.
Il n'y a pas de différence de performances, mais personnellement, je trouve la seconde source de confusion.
Deuxième ressemble pour moi comme "Yoda condition", c'est à dire
if(2 == x) ...
et est beaucoup moins lisible.C'est la meilleure pratique pour éviter de base typo que la plupart des IDE moderne de la ramasser, parce que parfois vous voulez faire des comparaisons entre les types plus complexes qui ne sont pas null et finissent par faire accidentelle des affectations. De sorte que le motif reste le même, mais je n'ai jamais vu ce lié à la performance et à ne jamais l'avoir vu générer spécial de byte code.
L'idée est d'avoir la statique, la valeur connue de la première, de sorte que vous ne pouvez pas lancer toute sorte de bizarre exception lorsque vous effectuez la comparaison.
Aucune des deux méthodes sont "plus correct", donc c'est entièrement à vous de décider ce que vous souhaitez utiliser.
il n'y a pas de différence. Mais dans la deuxième façon, vous évitez la faute de frappe comme
test = null
. Dans la mesure où dans la deuxième façon, vous obtiendrez d'erreur du compilateur.Il n'est pas recommandé d'utiliser ce dernier. Les deux sont équivalents, mais la première est plus facile à lire.
Cette "meilleure pratique" vient de C où booléen n'existe pas. Les entiers sont utilisés à la place, et
if (foo = 1)
n'est pas une erreur de syntaxe, mais c'est complètement différentif (foo == 1)
.En Java, seulement des expressions booléennes peuvent être à l'intérieur d'un si, et cette pratique n'a pas beaucoup de sens.
Il n'est pas vraiment différente entre les deux. Il n'y a pas de problème de performance, mais il y a des notes suivantes:
=
opérateur d'affectation et de==
opérateur de test équivalent, mais généralement les gens à l'aide deif
déclaration=
au lieu de==
par la deuxième approche développeur arriverCompile-Time-Error
parce que nul ne pouvez pas utiliser dansLeft-Side
d'une instruction d'affectation.