`
chenchuan
  • 浏览: 18041 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

残酷的非空if判断

阅读更多
经常我们在开发过程中会出现很多if(xx==null)等这样的判断,而且基本上会占据大量的这样非空的这样的判断,对于编码来说很反感,但是在代码中如果不进行这样的判断又会造成程序的bug,  大家有什么好的想法能解决这个问题,大家平时的编码习惯是怎么样的 一起讨论
分享到:
评论
15 楼 jansel 2011-05-18  
Assert
NullObject
14 楼 uhlan 2011-05-18  
非空检查是不可避免的
因为很多基础接口会抛出空指针,比如正则:Matcher m = pattern.matcher();可能会抛出空指针 ,如果方法需要调用pattern.matcher,就必须预先做非空检查

非空检查一般分为两种
1. 空值为合法输入,有很多方便的工具类能简化非空检查
    String 可以用 org.apache.commons.lang.StringUtils.isEmpty(str)
    Collection和Map可以用 org.springframework.util.CollectionUtils.isEmpty()
    如果自定义对象的话,更可以使用Null Object模式减少这种判断
2. 空值不合法
   可以使用Assert做:org.springframework.util.Assert.notNull(obj,message);
13 楼 steafler 2011-05-18  
不要返回空指针
12 楼 trjianjianjiao 2011-05-17  
一般不好避免。如果总是对同一个类判空,可以考虑设计一个对应的NullObject。
11 楼 watanoeye 2011-05-17  
freemarker中:
<#if name??>${name}</#if>
或者直接 ${name!"ooxx"}
还可以: ${name???string(name, 'ooxx')}
10 楼 duqiangcise 2011-05-17  
if(null!=name) {  

/////
if(StringUtils.isNotBlank(name)) {  
9 楼 幻无极 2011-05-17  
还是js的写法轻松点
8 楼 sam.ds.chen 2011-05-17  
纠正两个笔误
ray_linn 写道
一个东西叫design by contact

contact应为contract

night_stalker 写道
...
如果用 groovy,很多情况就能用 .? 运算符简化,读和写都舒服很多。
...

.?应为?.
7 楼 frogfool 2011-05-17  
chenchuan 写道
经常我们在开发过程中会出现很多if(xx==null)等这样的判断,而且基本上会占据大量的这样非空的这样的判断,对于编码来说很反感,但是在代码中如果不进行这样的判断又会造成程序的bug,  大家有什么好的想法能解决这个问题,大家平时的编码习惯是怎么样的 一起讨论



if(null==xx)  {
}


//建议常量前置

if(null!=name && name.equals("ITEYE")) {
}


有时可能少写了判断

if("ITEYE".equals(name)) {
}

6 楼 xieye 2011-05-17  
如果php
if (!$xx) {
  .....
}
5 楼 yangyi 2011-05-17  
http://en.wikipedia.org/wiki/Null_Object_pattern
4 楼 night_stalker 2011-05-17  
语言缺陷,基本无解。

某些情况可以用 @NotNull 和 @Nullable 使代码清晰些 ⋯⋯ 但是不会有太大帮助。
guava 的 Strings.isNullOrEmpty() 也有些用。

如果用 groovy,很多情况就能用 .? 运算符简化,读和写都舒服很多。
如果用 scala,用 option 传参数可以强制实现的人做空判断,可以减少一些疏忽或者偷懒造成的问题⋯⋯
最完美的解决方法就是用一种没有 null / nil 值的语言,如 haskell,不过那些靠写 if(null != xx) 吃饭的人肯定不同意⋯⋯
3 楼 抛出异常的爱 2011-05-17  
NullObject 对于有出空可能的
对于不应该出空的地方加断言
2 楼 ray_linn 2011-05-17  
一个东西叫design by contact
1 楼 treemap 2011-05-17  
你要觉得不爽 专门 封装 一个 方法好 了

数据有效性判断是 必须的 

就跟 非运行异常 需要处理一样

相关推荐

    还在用if(obj!=null)做非空判断,带你快速上手Optional

    * of() 方法:用于创建一个非空的 Optional 实例,例如 `Optional&lt;String&gt; optional = Optional.of("Hello");` * ofNullable() 方法:用于创建一个可能为空的 Optional 实例,例如 `Optional&lt;String&gt; optional = ...

    java if判断字符串非空.docx

    在Java编程中,判断字符串非空是一个常见的任务,特别是在处理用户输入或数据验证时。从提供的代码示例中,我们可以看到几种不同的方法来检查字符串是否为空。这些方法包括使用基本的逻辑运算符、Apache Commons ...

    判断非空函数和使用实例

    在IT领域,尤其是在软件开发与编程中,“判断非空函数”是一个重要的概念,它涉及到对变量或对象状态的检查,确保其不为空或未被初始化。这种检查是防止程序运行时错误的关键步骤,特别是在处理数据库操作、用户输入...

    05.if判断_Pythonif判断_If..._

    在Python编程语言中,`if` 判断语句是实现条件控制的重要结构,它允许程序根据特定条件执行不同的代码块。本节将深入探讨`if`判断及其相关的语法和应用场景。 1. `if` 语句基本语法 Python中的`if`语句非常简洁,...

    sql server字符串非空判断实现方法

    总结来说,SQL Server中的字符串非空判断是通过`is null`或`is not null`条件来实现的,而在动态构建字符串时,可以通过`if`语句配合`is null`或`isnot null`以及`len`函数来避免空字符串的操作。同时,`isnull`函数...

    LocalDateTimeUtil.java

    import java.time.LocalDateTime;... }else if(type == 2){ //获取小时 date = LocalDateTime.now().minusHours(i); }else if(type == 3){ //获取分钟 date = LocalDateTime.now().minusMinutes(i);

    js中el表达式的使用和非空判断方法

    总结,本文介绍了如何在JavaScript中使用EL表达式来处理Spring MVC返回的JSON数据,以及如何进行非空判断和安全地解析JSON字符串。在实际应用中,需要注意避免使用`eval()`,因为它可能导致脚本注入攻击,而应优先...

    jquery前端非空验证

    jQuery,一个广泛使用的JavaScript库,提供了强大的功能来辅助前端开发者进行非空验证。本篇文章将深入探讨如何利用jQuery进行前端非空验证。 一、jQuery简介 jQuery是一个轻量级、高性能的JavaScript库,它简化了...

    PYTHON学习教程:条件判断(if、elif.、else代码练习print Run).docx

    也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去执行else的内容。else语句可以单独使用,也可以与if语句一起使用。 elif是else if的缩写,可以有多个elif语句。if语句的完整形式是:...

    JavaScript中通用的两个非空检测函数

    2. **逐个判断非空**:使用`if...else if...else`结构,对每个字段进行非空判断。 3. **错误提示与返回值**:如果发现某个字段为空,则弹出提示信息,并返回`false`阻止表单提交;如果所有字段都填写了,则返回`true...

    JAVA日期判断方法小结

    该方法使用 substring 方法将日期字符串分割成年、月、日三个部分,并使用Integer.parseInt方法将其转换为整数,然后使用if语句判断日期的合法性。 4. 根据给定的日期计算两个日期之间的天数 根据给定的日期计算两...

    velocity为空判断

    #### 判断非空: 直接使用变量$xxx,如果变量存在并且不为空,那么`#if ($xxx)`的条件将为true。例如: ```velocity #if ($xxx) 变量$xxx有值 #else 变量$xxx为空或不存在 #endif ``` 需要注意的是,`#if (!$...

    if语句练习题目

    这里利用了字符串的切片功能来检查正反两个方向的数是否相同,`if`语句用于作出判断并输出结果。 ### 总结 通过这些练习题目,我们不仅加深了对`if`语句的理解,还学会了如何将它应用于实际问题的解决中。`if`语句...

    还在用if(obj-=null)做非空判断?带你快速上手Optional实战性理解-.zip

    计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习参考资料计算机技术、IT咨询、人工智能AI理论介绍,学习...

    freeMark if嵌套

    在FreeMarker中,`&lt;#if&gt;`语句用于进行条件判断,如果表达式的值为真,则执行相应的代码块。在某些情况下,我们可能需要在`&lt;#if&gt;`语句内部再嵌套`&lt;#if&gt;`,这就是所谓的`if`嵌套。 首先,让我们理解`&lt;#if&gt;`的基本语法...

    JS中判断字符串存在和非空的方法

    在JavaScript(JS)中,判断一个变量是否为字符串并确保其非空,是一个常见的需求,尤其是在处理用户输入或从API获取数据时。本篇文章将详细探讨如何有效地进行这种检查,并指出其中的一些陷阱和注意事项。 首先,...

    javascript if条件判断方法小结

    JavaScript中的if条件判断是编程中常用的一种控制流程语句,用于基于不同的条件来执行不同的代码块。当编写代码需要根据不同情况做出决策时,条件语句是非常重要的工具。 在JavaScript中,主要的条件语句包括if语句...

    shell浅谈之二 运算符和if条件判断

    在Shell脚本编程中,运算符和if条件判断是核心组成部分,它们允许脚本根据不同的条件执行相应的操作。本文将详细探讨这些概念。 首先,我们要理解`if`条件判断是控制流程的重要工具,它允许程序根据指定的条件来...

    python if-else 写在一行(csdn)————程序.pdf

    if any(inputs): # 判断列表非空 for t in inputs: if t temp.append(t) else: temp.append(None) res.append(temp) ``` 这里,`any(inputs)`用于检查列表是否为空,如果列表非空,则遍历列表元素,根据条件...

Global site tag (gtag.js) - Google Analytics