编程语言最基本的类型,整型、浮点都是没有 null 值的。一般用零来表示“无”这个意思。
诚然,很多语言比如 python, java 的字符串和数字类型可以赋值为 null. 其实不对,字符串为空的时候应该用零长度字符串,而不是空指针。在 python, java 语言里面,把数字和字符串变量赋值为 null 都是不合理的代码。
这不禁让我发出这个疑问,拥有“空”这个语义是不是应该交由类型来决定才对?
* 初始化但是未打开的文件是空的,打开出错的文件是空的。
* alpha 通道为 0 的 color 是空的
* 拥有零个元素的列表的空的
消灭了空指针,这个世界就没有空指针错误了对吧。关键是让类型来决定自己是否为空,写出的代码更精简,可阅读性更强:
if (file && file.isOpen())
blahblah...;
以后只要写:
if (file)
blahblah...;
就行了。
所以我觉得在高级编程语言里面,压根就不该存在 null 指针啊。之所谓存在空指针,是否只是一种性能优化的折衷。程序员为这个性能优化付出太多了。
--
FROM 112.47.122.*