有一种从编程中消除null的真正动力,并且有许多null在语言中是不好的例子。null有哪些好的用途以及它对编程的一些好处。
发布于 2014-01-31 10:58:11
在所有支持null
的计算机语言中,它的意思是“未知”(或“未赋值”-类似)。区分“未知”和特定值是很有用的。当类型变量的所有可能值都是其含义的可能值时,这一点尤其有用。如果一个变量的含义范围是有限的,那么这个范围之外的值可以保留为“未知”。
例如java:
int age = -1; // people can't have a negative age, so safe to use -1 as unknown
Integer hashCode = null; // hash can be any integer, so need to use null
在许多语言中,允许null的缺点是您需要处理这种情况:
同样在java中:
boolean hasSameHash = hashCode != null && hashCode.equals(other.hashCode);
发布于 2014-01-31 11:17:46
拥有null就像拥有一个未使用的变量。当然,拥有它是很棒的,但它并不是很有用。你可以赋值,但这样它就不会被闲置。如果您处理了null,那么它不是一件坏事。所以它并不是很糟糕,但也没什么用处。
什么时候是一件好事呢?好吧,我认为这个值还没有被设置的知识是有用的,因此是好的。
有些人使用null来表示另一个值。例如,null表示与零或非零数不同的东西。就我个人而言,我尽量避免赋值为null。对我来说,null的唯一含义是未使用/未分配。它没有任何进一步的宇宙目的,因此不可能是好的/坏的。仅有用/无用。或者,如果不处理,它可能会导致错误,当然,如果没有预料到错误,那么错误是糟糕的。
在我看来,真正的问题是为什么我们会有null。但这有点像是问你为什么有一个空篮子。你必须填满它才能有用。但是你不能填满它,除非你先做(或拿到)篮子。所以我想我们只会有空值...直到我们赋值。我得处理好它。
您可以通过分配默认值来避免空值。这对于字符串或数字非常有用,尽管有时您可能想知道该值是否已被主动设置。
https://stackoverflow.com/questions/21471469
复制相似问题