Programming languages 首选哪一种:(var==null)或(null==var)

Programming languages 首选哪一种:(var==null)或(null==var),programming-languages,Programming Languages,可能重复: 我在代码中看到了这两种方法,我不知道为什么一种方法比另一种更好,但是您更喜欢使用哪种方法,为什么?我会说var==null,因为它更像您实际所说的。“If my variable is null…”比“If null is my variable…”或“If nothing is my variable…”等的任何变体都更有意义。If(null==var)实践来自C,在C中,您可能会意外地编写If(var=null)(注意赋值运算符),它将编译(因为在C中,一切都不是0)但这将是一

可能重复:


我在代码中看到了这两种方法,我不知道为什么一种方法比另一种更好,但是您更喜欢使用哪种方法,为什么?

我会说var==null,因为它更像您实际所说的。“If my variable is null…”比“If null is my variable…”或“If nothing is my variable…”等的任何变体都更有意义。

If(null==var)实践来自C,在C中,您可能会意外地编写
If(var=null)
(注意赋值运算符),它将编译(因为在C中,一切都不是0)但这将是一个语义错误。因此,
if(null==var)
是一种防御性的做法,因为
null
是一个左值(同样是C/C++术语),不能将左值分配给它


在现代语言中(特别是在C语言中),如果您在
if
语句中执行赋值,编译器将警告您。

我更喜欢自己使用(var==null)。这对我来说更有意义,因为我正在检查“如果var为null”。当我把它理解为“if null is var”时,会遇到另一个顺序,这是毫无意义的。我还喜欢VB.NET如何使其可读性很强,并使用“if var is nothing”(如果var为nothing)检查null(与其他比较不同)。通常,在比较两个值时,我倾向于先检查未知值,然后检查已知值。这样,我首先知道我在看什么,为测试提供上下文。大多数语言都不在乎,但我认为有些语言可能不在乎。

语言不可知论者

在方案中,无歧义:

(null? var)

它们都具有相同的功能并产生相同的结果。这完全是个人的选择

我个人更喜欢第一个,因为“var为null”或“var等于null”比“null为var”或“var为null”读起来更好


有些人更喜欢第二种方法,并声称它减少了由打字错误引起的错误,因为
null=var
var=null
仍在编译时会导致错误。然而,这些天来,编译器对此发出警告,所以我认为这是一个没有实际意义的问题。

想给出答案,但你已经说出了我想说的话。所以-我刚刚把你的票投了上去。:)我知道这是一个复制品,但很难在上面搜索!我也没有在我的搜索或建议中看到它,如果是的话,我道歉。这里有一个。。它还有其他重复项列表。我的第一种编程语言是C语言,在我学会实际操作之前,我犯过几次这样的错误。但是,我不使用反向形式,因为我不会经常犯这种错误,而且对我来说(var==null)更可读。但是如果你写“if(var=null)”,你肯定会在C中被烧死。我也是结束另一个问题的人之一:)。但是说真的,所以搜索需要改进。>所以如果(null==var)是一种防御性的做法,我在C/C++中做了很多次,正如您所说的防御性原因。关于用法的答案似乎取决于您使用的编程语言。+1它来自C语言,并且似乎得到了其他语言背景的人的确认,他们没有找到任何原因。我开始厌倦那些不评论原因就投反对票的人。