===============================================

2019/8/27_第1次修改                       ccb_warlock

===============================================

写这篇文章的起源是最近在看别人架构代码时,总看到类似下面的写法(param为变量):

if (null == param)
{
  // todo
}

一般的逻辑是“如果参数为null时,做什么操作”,直接等于null不就好了?

C#好像也没区别?

那为什么他要将null提前,写这么别扭的写法呢?

经过和作者的讨论,主要是防止其他语言的一些坑。举例,

int value = ;

if (value = )
{
// todo
}

C#:这个逻辑在编译器会报错,因为“value = 3”的结果是int而不是bool。

C++:这个逻辑在编译器是通过的,因为value是大于1的整型,在C++的语法中,大于1的整型默认可以转化为bool真,所以编译器不报错,但是这个逻辑不符合设计。

倒着写的好处之一就是可以规避语法带来的坑。

int value = ;

if ( = value)
{
// todo
}

这么倒着写,C++的编译器也会发现异常,从而规避了由于开发的疏漏而埋下的坑。

结论:为了规避语言层面的坑,可以试着在平时写if判断时适应值倒着写的写法,从写法上规避一些坑爹的内容。

【写法】为什么if判断中,值要倒着写的更多相关文章

  1. C#中判断某个值是否存在于枚举

    我有一个枚举类型: #region -酒的种类- public enum WineType { 白酒 = 3, 葡萄酒 = 4, 洋酒 = 5, 老年陈酒 = 16, 啤酒 = 17 } #endre ...

  2. js中的NaN,isNaN与Number.isNaN的区别,如何判断一个值严格等于NaN

    在JavaScript的数字类型Number中,我们最常使用的大概是整数类型与浮点数类型,但除这两者外,还有个特殊的存在NaN,为什么NaN!==NaN?我们如何判断一个值是否等于NaN呢?这篇文章好 ...

  3. js 实时监听input中值变化

    注意:用到了jquery需要引入jquery.min.js. 需求: 1.每个地方需要分别打分,总分为100; 2.第一个打分总分为40; 3.第二个打分总分为60. 注意:需要判断null.&quo ...

  4. Shell编程中括号判断中赋值语句和判断语句

    #!/bin/bash declare var="xxx" # without space and use one = #1.judge whether the assignmen ...

  5. 基于FPGA的中值滤波算法实现

    在这一篇开篇之前,我需要解决一个问题,上一篇我们实现了基于FPGA的均值滤波算法的实现,最后的显示效果图上发现有一些黑白色的斑点,我以为是椒盐噪声,然后在做基于FPGA的中值滤波算法的实验时,我发现黑 ...

  6. Windows 系统判断MD5 值的办法

    Linux 系统的文件要传到Windows系统里面,传输过程中网络不稳定,为了判断文件是否完整传输,所以就用md5的方式判断是否同一个文件 Linux系统 [root@augusite ~]# md5 ...

  7. TOJ5398: 签到大富翁(简单模拟) and TOJ 5395: 大于中值的边界元素(数组的应用)

    Python代码!!! 5395 传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=53 ...

  8. 关于提交表单时添加自定义值的方式:data中值可绑定function

    表单提交时新增自定义值: $.ajaxForm(){ data:{aaa:"12"} } 但是这个是在初始化的时候就绑定进去的,所以值是固定的初始化时候的值,若想添加动态值,可以这 ...

  9. 【算法随记三】小半径中值模糊的急速实现(16MB图7.5ms实现) + Photoshop中蒙尘和划痕算法解读。

    在本人的博客里,分享了有关中值模糊的O(1)算法,详见:任意半径中值滤波(扩展至百分比滤波器)O(1)时间复杂度算法的原理.实现及效果 ,这里的算法的执行时间和参数是无关的.整体来说,虽然速度也很快, ...

随机推荐

  1. div模拟textarea且高度自适应

    需求 我们知道文本超出 textarea 高度后,textarea 就会出现滚动条,需求就是让 textarea 高度跟随文本高度变化,屏蔽滚动条,原来做过用js去监听文本行数,然后改变文本框的高度, ...

  2. 记录一次利用 python 进行日志模块开发过程

    只记录大体思路和我认为其中需要记录的地方. 正则匹配 正则匹配的模式很难记忆,即使记住了,也很难写出无错误的匹配模式.但是,借助网上一些提供实时对比的网站,如 regexr.com. 代码示意: im ...

  3. UDF——提取指定线上随时间变化的物理量

    Fluent版本:Fluent 19.0 Visual Studio版本:Visual Studio 2013 有时候我们想要实现一些功能,比如:我们在使用Fluent进行瞬态计算的时候,想要获取某条 ...

  4. Spring系列:下载

    Spring 官网:http://projects.spring.io/spring-framework/ Spring下载地址:https://repo.spring.io/simple/libs- ...

  5. 使用grpc C++功能

    grpc c++开发需要安装相关工具以及框架才能进行开发. rz 远程上传文件 本地开发环境搭建: 1.编译相关工具 pkg-config autoconf automake Libtool shto ...

  6. eclipse右键空白、eclipse提示空白

    右键选择菜单经常显示空白.要试好多次才会出来.eclipse无法启动.启动报错 查看eclipse安装目录下的.metadata下的.log 里面会记录eclipse的报错信息 一般显示空白问题都是因 ...

  7. 在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据

    在.Net Core 3.0中 内置了一套Json序列化/反序列化方案,默认可以不再依赖,不再支持   Newtonsoft.Json. 但是.NET Core 3.0 System.Text.Jso ...

  8. (转)CMDB介绍

    原文:https://www.cnblogs.com/xuecaichang/p/10265936.html CMDB开发---https://blog.csdn.net/bbwangj/articl ...

  9. SQL优化关于or与in使用

    网上有很多人都在谈论or与in的使用,有的说二者没有什么区别,其实不然,估计是测试做的不够,其实or的效率为O(n),而in的效率为O(log2n),当基数越大时,in的效率就能凸显出来了. 有人做了 ...

  10. elementUI vue this.$confirm 和el-dialog 弹出框 移动

    调试了好久, 还能凑合用, 请直接看DOME 示例,复制就能用: <!DOCTYPE html> <html lang="zh"> <head> ...