注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

snoopyxdy的博客

https://github.com/DoubleSpout

 
 
 

日志

 
 

do{}while(0)的用法  

2012-11-02 22:50:27|  分类: node |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近在weibo看到一篇c++利用do{}while(0)来做流程控制,减少goto语句的重复代码量,感觉想法很不错,这里我们假设一个场景,让js也能利用一把do{}while(0)的妙处。
设计场景:

流程可能出现condtion4种情况,当出现condition1-3时,期望执行dosomething1,当出现condition4时,期望执行dosomething2,否则默认执行dosomething3,
同时我们要记录每个condition情况的日志,do_log
我们可能写出如下伪代码:



function if_else(condition){
if( condtion1 ){
do_log_c1
do_something_1
}
else if( condtion2 ){
do_log_c2
do_something_1
}
else if( condtion3 ){
do_log_c3
do_something_1
}
else if( condtion4 ){
do_log_c4
do_something_2
}
else{
do_log_c5
do_something_3
}
}

这样我们就利用if和else完成了整个流程的代码,接下来我们利用do{}while(0) 来重写这个流程控制:

function do_while(condition){
do{
if( condition1){
do_log_c1
break;
}
if( condition2) {
do_log_c2
break;
};
if( condition3) {
do_log_c3
break;
};
if( condition4){
do_log_c4
do_something_2
return;
}
else{
do_log_c5
do_something_3
return;
}
}while(0);
do_something_1;
}


这样我们就少写了几遍do_something_1这段代码了,感觉是不是很好?






  评论这张
 
阅读(666)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016