`
稻-草
  • 浏览: 62660 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

话说if (null == x)

    博客分类:
  • Java
阅读更多

     最近看到Java项目的代码中看到这样的语句,

if (null == model)
{
     ...
}

     我问开发这段代码的同事问什么这么写,同事说是编程规范规定的。

 

     但是在Java项目中,不需要这样写,也不应该这样写。

 

     if 的判断语句倒着写,这种写法是从C\C++语言开始的,(获取其它语言更早就有了 :-) )

     在C\C++语言中,数字等于0表示false, 不等于0表示true, 下面的两个if判断代码都是合法的,但是含义却南辕北辙

// 1 赋值 + 判断
int count = -1;
if (count = read())
{
     ...
}

// 2 判断
int expectedCount = 20;
if (expectedCount == read())
{
     ...
}

  人总是会犯错误的,一个不小心,第二段代码就成了

int expectedCount = 20;
if (expectedCount = read()) // == 变成了 =
{
     ...
}

  为了防止这种低级错误,于是就有了编程规范。

int expectedCount = 20;
if (read() = expectedCount) // 直接编译错误,就避免了错误的产生
{
     ...
}

  所以在C、C++项目中有这样的编程规范是正确的。

 

但是在Java项目中,

Java 语言中布尔变量就只有true和false, 数字不能表示布尔.下面的代码编译器是直接报错的,所以就避免了低级错误的发生.

int expectedCount = 20;
if (expectedCount = read()) // 编译器直接报错
{
     ...
}

 所以在Java项目中,不需要 倒着写; 这样还会降低可读性,所以不应该 倒着写;

 

3
0
分享到:
评论
3 楼 CodingMouse 2010-05-06  
我很支持博主的这种说法!

前段时间还有人叫我 if (null == model) 这样写,我总觉得别扭。

而且博主的解释才让我想起在哪个网文上看到过相应的解释,的确,在Java语言中没必要写倒装句,会降低可读性,本来Java中就没有“非零即为真”的说法。
2 楼 稻-草 2009-11-02  
zzx0421 写道
有种特例:
if ("" == model)


这样可以不用null判断,
不过正确的方式是
if ("".equals(model))
1 楼 zzx0421 2009-11-02  
有种特例:
if ("" == model)

相关推荐

    Oracle NULL值的比较函数(是NULL=NULL为真的函数)

    你是否也为在Oracle里如何实现NULL的比较而犯愁呢?

    如何使用CASE WHEN语法判断入参代替if test=user-name != null and user-name !=

    = null and user_name != ''">`条件判断虽常见,却也暴露了其平台局限性和适用场景的不足。本资源旨在深入探讨如何运用CASE WHEN语法巧妙绕过这些限制,实现更广泛平台兼容性与代码普适性的优雅升级。 1. 破除平台...

    在javascript中,null>=0 为真,null==0却为假,null的值详解

    至于为什么null == 0是false,规范的第3条规则明确表示,如果类型(x)是Null,则返回true,除非y是undefined。由于0既不是undefined也不是null,因此结果为false。 最后,null === 0中的全等比较不会进行任何类型...

    mybatis trim标签的使用

    <if test="id != null"> id, </if> <if test="name != null"> name, </if> <if test="seq != null"> seq, </if> <if test="description != null"> description, </if> <if test="status !=...

    undefined==null引发的两者区别与联系第1/3页

    貌似以前也看过null==undefined,null!==undefined,但也一直没有在意。 近日看过去别人的一程序源码,到处都有一些如if(x!=undefined&&x!=null&&x!=””)之类的判断,突然觉得写的很啰嗦,俺一般都直接if(x){}因为...

    JavaScript中为什么null==0为false而null大于=0为true(个人研究)

    我呢,今天闲来没啥事,研究了一下有关“null”和“0”的关系。希望大家看完了能有所收获。 代码如下: alert(null>=0) 代码如下: 上面的代码会弹出什么来呢?False?True?其实是true。那么是为什么呢?为什么”...

    WhatIf,whatif是用于表示单个if-else语句的kotlin扩展,可以为null,也可以为布尔值。.zip

    总结一下,`whatif`是Kotlin的一个扩展,主要用于简化if-else语句,尤其在处理null安全和布尔条件时。它利用高阶函数和lambda表达式,让代码更加紧凑且易于理解。作为一个开源项目,`WhatIf`为Kotlin社区提供了宝贵...

    高质量C++-C编程指南

    不是程序写错了,是程序员为了防止将 if (p == NULL) 误写成 if (p = NULL),而有意把p和NULL颠倒。编译器认为 if (p = NULL) 是合法的,但是会指出 if (NULL = p)是错误的,因为NULL不能被赋值。 程序中有时会遇到...

    多界面,多文件,人员管理信息查询Cmd命令行

    if (NULL != pCmd_Map) { char szBuf[255] = ""; const CMD_MAP *pTemp = NULL; while (true) { cout<<pAppName<<">:"; cin>>szBuf; pTemp = pCmd_Map; if (StrCmp(szBuf, "Exit")) { break; } for...

    Java中String判断值为null或空及地址是否相等的问题

    if (value == null) { System.out.println("value is null"); } else if ("".equals(value)) { System.out.println("value is blank but not null"); } else { System.out.println("value is \"" + value + "\...

    2022大三下学期 数据压缩实验 LZW算法原理及实现

    if (NULL == bf->fp) return NULL; bf->mask = 0x80; bf->rack = 0; return bf; } BITFILE *OpenBitFileOutput(char *filename) { BITFILE *bf; bf = (BITFILE *)malloc(sizeof(BITFILE)); if (NULL == bf) ...

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

    if (typeof x == "undefined") { alert("x is undefined"); } ``` null null 是一种特殊的 object 类型,表示一个对象的不存在或空值。例如,变量 a 被赋值为 null 时,typeof a 将返回 "object"。null 和 ...

    lua-cjson decode中null改成nil

    3. 修改这个条件语句,使其不直接赋值为`nil`,而是赋值为字符串`"null"`,例如:`if json == "null" then value = "null" end`。 4. 编译并链接修改后的lua-cjson库,然后在你的项目中使用这个定制版的库。 请注意...

    验证不能为空,null,多个空格的js

    //if(text==null||text==''){ //不为空和输入的不是空格 if(text==null||text.replace(/^\s+,""/).replace(/^\s+$/,"")==''){ alert('用户名不能为空!'); //重新获得焦点 document....

    PHP 判断数组是否为NULL的5大方法

    if (is_null($array)) { echo "数组是NULL"; } else { echo "数组不是NULL"; } ``` 2. 使用`empty()`函数 `empty()`函数可以检测变量是否为空。当数组未被定义或者其值等价于FALSE(包括NULL)时,`empty()`返回...

    javascript 处理null及null值示例

    代码如下: function dealNull(obj){ for(var i in obj){ if(null == obj[i] || ‘null’ == obj[i]){ obj[i]=”; }else if(‘object’ == typeof obj[i]){ dealNull(obj[i]); } } }; // 测试的对象 var a={}; a.aa=...

    vs2010 编写的共享资源例子,包括客户端和服务器端

    if (NULL == lhShareMemory) { if (ERROR_ALREADY_EXISTS == GetLastError()) { //cout !"; } else { //cout !"; } return; } lpBuffer = (char*)MapViewOfFile(lhShareMemory, FILE_...

    深入SQLServer中ISNULL与NULLIF的使用详解

    在SQL Server中,ISNULL和NULLIF是两个非常重要的函数,它们主要用于处理NULL值,确保数据的完整性和一致性。在数据库操作中,NULL值经常会出现,尤其是在进行比较、计算或者查询时,理解并正确使用这两个函数是提升...

    c语言hash表

    if (NULL == pHashTbl || NULL == pHashTbl->value[data % 10]) return FALSE; if (NULL == (pNode = find_data_in_hash(pHashTbl, data))) return FALSE; if (pNode == pHashTbl->value[data % 10]) { ...

    Java工具类

    if (a == null || "".equals(a) || "null".equals(a) || "NULL".equals(a)) { return true; } else { return false; } } public static boolean isNull(Integer a) { if (a == null) { return true; } ...

Global site tag (gtag.js) - Google Analytics