关于程序null值的见解

caihouzi 2019-08-05 原文

关于程序null值的见解

今天遇到了一个问题,查询一条数据,返回用list接,发现少了2个值(ssh框架)。执行SQL少的这两个字段的值为null。上图说明一下:

可以看到第一次查询没有角标38、39的值。

是同一条SQL,第一张图数据库执行SQL,

查询到这两个字段值为null,用list接回来后没有角标38、39,如图所示。

原因还没有去代码测试,网上查询说list可以接null。

要说的不是这个问题,而是对于null值的一些个人粗浅见解。

首先个人觉得对于一个程序员来说,在写代码的时候需要注意的一点就是空值判断。

因为我们写的程序是处理数据的,如果没有数据不仅写的代码没有存在的意义,

而且会报空指针的运行异常。程序之所以运行是建立在有数据的基础之上的。

所以良好的代码应该首先考虑空值的问题。这点在很多经典的代码中都可以看到。

上图为spring框架的源码,就做了非空判断。

不仅如此,在Java语言中基本数据类型都接受null值而不会报错。

这是为什么呢?

1.String 对象:直接判断是否为 null,如果为 null 给 null 对象赋值为”null”。

2.非 String 对象:通过调用String.valueOf方法,如果是 null 对象,就返回”null”,否则调用对象的toString方法。

通过上面的处理,可以保证打印 null 对象不会出错。

原来Java语言在对于null值的处理上采用这样的方式解决的。从而保证了不会报错。

但是我们借助Java语言写代码的时候自己构造的一些对象是否为null只能自己去做非空限制。而且是必须要做的,

它能保证你的程序运行良好而不会因为空值报这种低级错误。

null不是任何一种数据类型,与其说它是一种特殊的值,不如说它是一种特殊情况下(数据为空)的处理策略。

讲的不够详细,也是理解还不够全面深入,null不止上面说的几点中会遇到,很多地方都有,

例如mybatis动态sql中where条件的拼接就要先判断是否为 “” | null。

想说两点:

1.良好的代码从预防null做起。如果写代码提前考虑到null的情况,能避免产生很多不必要的bug。

2.做到这一步是走向编程高手的第一步。个人感觉写代码也是有层次划分的。

起步是先从预防null做起,逐步考虑到的方面会越来越多,如高复用(重构)、高性能等,

代码水平和质量会越来越高,而且也能越来越考虑的视野扩大、层次提高,离架构师越来越近。

这是本人的第一篇博客,感谢进来看的老铁,

希望我们能一起努力、共同进步,同时也希望能多向你们学习、请教。

 

 

 

发表于 2019-08-05 22:03 菜猴子 阅读() 评论() 编辑 收藏

 

版权声明:本文为caihouzi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/caihouzi/p/11305858.html

关于程序null值的见解的更多相关文章

随机推荐

  1. 由Opencv开发的 植物大战僵尸

    版权声明:访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵 […]...

  2. 【算法】还在用递归实现斐波那契数列,面试官一定会鄙视你到死

    斐波那契数列问题是程序员学习和笔试中都会面对的问题,绝大多数的童鞋(包括笔者)都会采用递归的方式实现。这种方式 […]...

  3. Virtual Box 新建一个虚拟机安装系统(补充:WIN7 64 bit 系统虚拟机无法安装 64 bit 系统问题)

    1、安装Virtual Box好后,点击新建      2、配置内存大小,这个根据自己需要配置就好      […]...

  4. 转载:如何用PS淡化模糊背景,控制景深

    转载网址:http://wwwghks.blog.163.com/blog/static/1067986200 […]...

  5. webpack到底是干什么用的?

    转载于:https://segmentfault.com/a/1190000014148611?utm_sou […]...

  6. svn add . 报错,不能add全部,因为有一些文件已经在版本库中了

    svn add 目录名 –force SVN commit -m \’\’ […]...

  7. 附加数据库出错(错误5123)的解决办法(问题虽然解决了,但原因未找到,求指教!)

    前天重做了系统,重装了SQLServer2012Express,今天附加一个原来的数据库时就报错了,提示信息为 […]...

  8. 【Android初级】如何实现一个具有选择功能的对话框效果(附源码)

    我们去餐厅吃饭时,服务员都会拿菜单给我们选择点什么菜。今天就分享一个具有选择功能的简易对话框,给用户展示一个选 […]...

展开目录

目录导航