passerbytiny
2019-10-11 12:03:19 +08:00
因为这种推荐写法出来的时候 Java 还不流行,Java 流行后无脑跟风的又太多。
if (obj = null) 等效于 if (null),null = obj 在哪个语言都会报错(编译错误或运行错误)。在 Java 出现之前,不管是强类型的 C、C++,还是其他弱类型的语言,if (null) 又等效于 if (false) 。以及必须说明的是,那时候还盛行“记事本编码”。if (obj == null) 一个不小心就变成了 if (false),还特别难定位。if (null == obj) 虽然也会一不小心,但它变成的是编译错误(或者运行错误),非常容易定位。 于是 null == obj 就变成了推荐(或者强制)的编码规范。
Java 对此进行了简化,if (null) 直接报错,如果编译时就能确定则还报成编译错误,而 Java 之后的其它语言和 hint 工具,大多都加入了 if(obj = null)的检测,因此目前该项规范已经不适用,应当让位于可读性,还是要写成 if (obj == null)。