(null == var)和(var == null)之间有什么区别吗?

Lyl*_*ang -2 java null if-statement

我想知道两个条件表达式null == varvar == nullif语句中的Java 之间的区别 .

Sur*_*tta 8

没有区别.仅仅是一种风格问题.

而第一个称为yoda风格

在编程术语中,Yoda条件(也称为Yoda表示法)是一种编程风格,其中表达式的两个部分在条件语句中相反.


虽然这两个条件表达式null == varvar == null是equvilent.但是假设你将misspell ==(检查相等)引入bug 作为=(赋值),那么var = null就不会给你错误并在你的代码中引入一个bug.虽然你编写null == var并假设拼写错误,null = var但它会产生编译时错误.编译时错误比运行时错误更好.这是尤达条件形式的优势之一.

但我也建议你阅读尤达延续的批评:

许多程序员讨厌它,因为它必须在精神上重新反转它才能理解它.(其他人显然没有这个问题).这种做法被称为"尤达条件".无论如何,大多数编译器都可以被说服以警告条件中的任务.