`
fjlyxx
  • 浏览: 23048 次
  • 性别: Icon_minigender_1
  • 来自: 福建
文章分类
社区版块
存档分类
最新评论

说几句对null Object的使用的认识和思考

DAO 
阅读更多
看了篇论坛 对null Object的使用的认识和思考

有人提到:
/////////////////////////////////////
我个人理解的null object模式主要是用于
1,增强健壮性。
2,减少大量验证null object的重复编码。

即统一规定对象为null时对象对应方法的的默认行为,不过也有限制,就是要求实现公共接口。
具体也是有利有弊,具体问题具体分析。
/////////////////////////////////////

我个人不这么认为。这个现在是一种隐藏异常的现象,虽然表面上可以让系统看起来稳定,因为异常看起来少了,可是作者也意识到异常的存在,难道眼不见为净?

用NULL去替换一个异常或者去表示一种返回这也许不是一件好的事情。

也许我们一个应用都看不到一个异常,所以异常都用特定的返回值进行标志了。这样真的好吗?
就MIS系统的开发开说,按上面的逻辑,DAO层如果异常了 我返回一个null或者某个特定标志,OK那我要在LOGIC层判断下吧(这样还好,如果没判断呢?是不是会引发新的异常),恩我在LOGIC层判断的时候还要知道你DAO返回的是什么异常。我又要去找下,看看DAO的代码。麻烦吧?(或者当开发人员没有考虑完全DAO会抛出哪些异常的情况下,是否会出现多个不同情况出现的异常返回同一个值的情况呢?这种情况是最糟糕的。)

如果换种方式,你在DAO层把为null的情况用异常的形式抛出去,那么你的LOGIC层就明了很多了,看见这个异常你就知道是为什么抛的了。

所以一个好的系统必然会有其好的异常处理模式。JAVA的异常不是想象中那么简单的如果应用灵活了可以让代码开起来很舒服的。而且逻辑更严密,系统更健壮。
分享到:
评论

相关推荐

    C#对象为Null模式(Null Object Pattern)实例教程

    使用Null Object Pattern的好处是提高了代码的健壮性和可读性。它允许我们在不知道对象是否为null的情况下安全地调用方法,而不用担心出现未捕获的异常。此外,Null Object还可以提供一致的默认行为,使得代码逻辑...

    Oracle null的使用

    例如,在查询出征缴方式不为正划成功、倒扣成功的征收数据时,需要使用“is null”和“is not null”关键字。 了解 Oracle null 的使用是 Oracle 开发中非常重要的一部分。只有正确地理解和应用 null 的概念,才能...

    NOT NULL 和NULL

    如果既不指定NULL也不指定NOT NULL,列被认为指定了NULL 在 MySQL 中, 为一个 NOT NULL 字段设置 NULL 值 , 它并不会出错, MySQL 会自动将 NULL值转化为该字段的默认值, 那怕是你在表定义时没有...

    Delphi中JSon SuperObject 使用数据集与JSON对象互转.docx

    Delphi 中使用 Json SuperObject 将数据集与 JSON 对象互转 在 Delphi 中,数据集是最常用的数据存取方式。因此,必须建立 JSON 与 TDataSet 之间的互转关系,实现数据之间的通讯与转换。为此,我们需要使用 Json ...

    null移动端崩溃问题

    4. **Null安全的方法或操作符**:某些编程语言提供了对null友好的操作符或方法,如Kotlin的`?.`和`?:`操作符,以及C#的?.操作符,这些都可以防止因null引用引发的异常。 5. **使用特定的处理类**:描述中提到的“本...

    深入Java关键字null

    ### 深入Java关键字null #### 一、null代表不确定的对象 在Java语言中,`null`是一个非常重要的关键字,用于表示一个未确定的...正确理解和使用`null`可以帮助开发者避免常见的编程陷阱,提高代码的质量和健壮性。

    10个PB常见问题的讨论

    10个PB常见问题的讨论

    object转化为时间类型

    - 应该增加对输入数据的验证逻辑,确保其符合预期的格式和范围。例如,可以检查`time`是否为空或格式是否正确等。 3. **性能考虑**: - 在高并发场景下,频繁地调用此类转换方法可能会导致性能问题。此时,可以...

    superobject.pas

    总的来说,SuperObject是Delphi开发人员处理JSON数据的强大工具,它的易用性和灵活性使得JSON操作变得简单而高效。通过熟练掌握SuperObject,开发者可以在处理JSON数据时节省大量时间和精力,提高代码的可读性和可...

    pandas object格式转float64格式的方法

    在使用Pandas处理数据时,我们经常会遇到需要将数据类型从object转换为float64的情况,尤其是在从CSV或其他文本文件中读取数据时。object类型通常表示数据为字符串形式,而float64类型则表示数据为浮点数类型,后者...

    SafeFinder:当NullObject遇到ActiveRecord时

    使用SafeFinder,您可以通过简单的DSL定义模型的Null Object ,并在找不到该模型的实例时将其返回。 安装 将此行添加到您的应用程序的Gemfile : gem 'safe_finder' 然后执行: $ bundle 或将其自己安装为: $ ...

    js判断undefined类型,undefined,null,NaN的区别

    在比较运算中,null 和 undefined 被认为是相等的,但是 null 和 NaN 是不相等的。例如: ```javascript var a = null; var b = undefined; alert(a == b); // true alert(a == NaN); // false ``` NaN NaN(Not ...

    delphi7-json-superobject

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读易写、机器易于解析和生成的特点,被广泛应用于网络通信和数据存储。在 Delphi 7 中,SuperObject 库提供了一个强大的 JSON 解析和生成解决...

    spring mvc拦截器过滤json中的null值

    在某些情况下,为了保持数据的整洁和避免后端处理null值时出现异常,我们需要在数据传输前过滤掉这些null值。本教程将详细介绍如何使用Spring MVC的拦截器来实现这一功能。 首先,了解拦截器(Interceptor)在...

    null.sys 修复Git异常

    "null.sys 修复Git异常"这个主题涉及到的是在使用Git时遇到的一种特定问题,即系统文件null.sys可能与Git的正常运行产生了冲突,导致了异常。下面我们将深入探讨这个问题,以及如何进行修复。 首先,我们需要理解...

    List转Json

    这个过程涉及到对象序列化和JSON库的使用。以下是一个详细的步骤和知识点讲解: 1. **JSON基础**: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成...

    Unity3D教程:用ScriptableObject打包数据2

    BuildPipeline.BuildAssetBundle(Selection.objects, null, savaPath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows); } } ``` 这段代码首先获取当前选中的CSV文件对象,然后将每个CSV文件的...

    Python库 | null-object-0.1.0.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:null-object-0.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    关于sql中求平均值出现null值的解决方案

    因此,当你在SQL中对包含null的列执行AVG函数时,结果也会是null,这可能并不是我们期望的结果。本文将详细探讨这个问题,并提供几种解决策略。 首先,我们需要理解SQL中的NULL概念。NULL并不等同于零或空字符串,...

Global site tag (gtag.js) - Google Analytics