do{}while(false)的用法
do{}while(false):
在工作中我们能经常发现有人写 do{}while(false) 这样的代码,初看时让人迷惑不解,按照上面的语法 do{}while(false) 这样 do{} 里面的代码只会执行一次的啊,那么问题来了,为什么要这样写?
试想,我们在工作中是不是经常会遇到一种情况:第二个判断需要依赖第一个判断的结果,甚至第三个判断需要依赖第二个判断的结果。如下样式的代码:
if (one == true) {
if (two == true) {
if (three == true) {
//第三个依赖第二个判断结果,第二个依赖第一个判断结果。
//...
}
}
}
那这样的代码是不是看起来好恶心,各种判断嵌套在一起,很是不容易理清代码逻辑,而且很容易出错。那有没有一种清爽的代码风格来解决这个问题呢?答案肯定是有的,就是我们上面提到 do{}while(false) 。
那要如何用代码实现呢,请看下面的代码示例:
do {
if (one == false) {
break;
}
if (two == false) {
break;
}
if (three == false) {
break;
}
} while (false);
既然后面的判断依赖前面的判断结果,那么所有的条件都去判断是否等于false,等于false的直接break跳出do while 循环。这样的代码风格是不是比刚才那种写法清爽多了。
结论:
do{}while(false) 最大意义是:简化 if else 的嵌套结构判断逻辑。
do{}while(false)的用法的更多相关文章
- return、 return false的用法
1. return返回null,起到中断方法执行的效果,只要不return false事件处理函数将会继续执行,表单将提交2. return false,事件处理函数会取消事件,不再继续向下执行.比如 ...
- do..while(false)的用法总结
首先要注意: do..while(0) 代表do里面的东西至少被执行一次,在这里仅仅执行一次. 此种用法有三个用处: 代替{}代码块,实现局部作用域.在某些宏定义时非常有用: #define f(x) ...
- do while(false)实用技巧
今天看项目源码的时候发现有些地方用了do{} while(false)的用法,查了下发现这样确实有些优点,mark下. 1.最重要的优点,用在略微复杂的宏定义中. #define AB1 a; b; ...
- cocos2d-x中false,setSwallowTouches,stopPropagation的区别
研究到cocos2d-x触摸这一块了,3.0和2.0相比已经有了很大的不同,使用更加方便和容易理解了. 直接进入正题,解释下,标题中3个用法的区别 通常来说,应用程序中更多使用的是单点触摸,为了简化单 ...
- JS事件及其兼容用法
JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间. 1.事件流:描述的是从页面中接收事件的顺序. IE提出的事件冒泡流:事件开始由最具体的 ...
- PAT——1064. 朋友数(set用法)
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如123和51就是朋友数,因为1+2+3 = 5+1 = 6,而6就是它们的朋友证号.给定一些整数,要求 ...
- Java基础之instanceof和transient关键字用法
instanceof 用于检测指定对象是否是某个类(本类.父类.子类.接口)的实例.Java中的instanceof也称为类型比较运算符,因为它将类型与实例进行比较. 返回true或false. 如果 ...
- auth模块用法
Auth模块: 如果你想用auth模块 那么你就用全套 createsuperuser 创建超级用户 这个超级用户就可以拥有登陆django admin后台管理的权限 Auth模块是Django ...
- C#中精确计时的一点收获 【转】
C#中精确计时的一点收获 [转] 以下所有代码运行环境:Windows 2003, Intel(R) Core(TM) 2 Duo CPU E8400 @ 3.00GHz 2.99GHz,2.96G ...
随机推荐
- mysql 常用命令和笔记
第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uro ...
- MySQL错误修复:Table xx is marked as crashed and last (automatic?) repair failed
问题一 Table xx is marked as crashed and last (automatic?) repair failed 有开发找到我,说数据库坏了,连不上数据库,看了下 MySQL ...
- list scheduling algorithm 指令调度 —— 笔记
作者:Yaong 出处:https://www.cnblogs.com/yaongtime/articles/14033444.html 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者同 ...
- FL Studio乐理教程之和弦进行
和弦级数 在一个调内,分别由调内7个音为根音组成的和弦总共有7个,每个和弦依次为1-7级和弦.例如在C大调内,以C为根音建立和弦,就是一级和弦,以D为根音建立和弦,即是二级和弦,以此类推. 图1:1- ...
- Redis多线程原理详解
本篇文章为你解答一下问题: 0:redis单线程的实现流程是怎样的? 1:redis哪些地方用到了多线程,哪些地方是单线程? 2:redis多线程是怎么实现的? 3:redis多线程是怎么做到无锁的? ...
- iOS 百度地图使用详解
最近仿照美团做了款应用,刚好用到百度地图,高德地图之前用的比较多,只是这个项目的后台服务器是另外一个公司做的,他们用的就是百度地图,现在网上用百度地图的还不算太多,博文也是断断续续的,主要是中间跳跃有 ...
- python3 Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接
报错源代码from selenium import webdriverimport unittestimport timefrom HTMLTestRunner import HTMLTestRunn ...
- LaTeX中的数学公式之矩阵
矩阵的代码及注释: 显示效果:
- Bootstrap Blazor 组件介绍 Table (一)自动生成列功能介绍
Bootstrap Blazor 是一套企业级 UI 组件库,适配移动端支持各种主流浏览器,已经在多个交付项目中使用.通过本套组件可以大大缩短开发周期,节约开发成本.目前已经开发.封装了 70 多个组 ...
- LeetCode 047 Permutations II
题目要求:Permutations II Given a collection of numbers that might contain duplicates, return all possibl ...