`
xiaoshenge
  • 浏览: 169816 次
  • 性别: Icon_minigender_1
  • 来自: 十堰
社区版块
存档分类
最新评论

如何写易懂的代码--尽量不要再ifelse中嵌套ifesle

阅读更多

由于搞二次开发骂过以前代码的作者,所以为了避免被人骂,尝试写注释,发现注释多了代码更乱了。今天对一个函数code review,总结了一个以前看到过的经验:尽量不要再ifelse中嵌套ifelse。

下面贴图,贴代码对比一下。

code review前:

 

	/**
	 * 获取用户信息
	 * @return link为邀请链接,
	 *         score为积分,
	 *         nick为昵称,
	 *         num为作品数,以此确定分页数量,
	 *         opus1为当前页第一副作品图片,
	 *         opus2当前页第二幅作品图片地址,
	 *         opus3当前页第三幅作品
	 */
	public function uinfoAction(){
		$random = $this->request->getGetParameter('random');//随机数
		$pwd = $this->request->getGetParameter('pwd');//私钥
		//$page = $this->request->getGetParameter('page',1);//当前页面
		//验证flash请求是否正确
		if($pwd==md5("tenwowactqqcom@tenwow123".$random)){
			//验证qq是否登录
			if (TMAuthUtils::isLogin()){
				$qq = TMAuthUtils::getUin();
				$link = TMLibHtmlHelper::urlJump(TMConfig::BASE_URL,$qq,1,TMConfig::TAMS_ID);//邀请好友链接
				$service = new TMService();
				$info = $service->selectOne(array('FQQ'=>$qq),'FScoreCount,FNick','Tbl_User');//获取昵称
				//flash方要求全部获取数据
				/*$number = ($page-1)*3;
				$count = count($service->select(array("FQQ"=>$qq),'*','Tbl_File'));
				$list = $service->select(array("FQQ"=>$qq),"FUrl",'Tbl_File',array($number,3),array('orderby'=>'FFileId  DESC'));*/
				//判断$list是否为空
				$count = count($service->select(array("FQQ"=>$qq),'*','Tbl_File'));
				$list = $service->select(array("FQQ"=>$qq),"FUrl",'Tbl_File');
				$pic = array();//图片地址数组
				foreach ($list as $li){
					$li[0] = TMConfig::BASE_URL."data/".$li[0];
					$pic[]=$li[0];
				}
				return json_encode(array('code'=>'0',
                                         'message'=>'成功拉取数据',
                                         'qq'=>"$qq",
                                         'link'=>$link,
                                         'score'=>$info['FScoreCount'],
                                         'nick'=>$info['FNick'],
				                         'wblog'=>"1000",
				                         'num'=>"$count",
                                         'pic'=>$pic,
                                         ));
			}else{
				return json_encode(array("code"=>'1','message'=>'对不起,您还没有登录!'));
			}//endif 验证qq是否登录
		}else{
			return json_encode(array("code"=>'2','message'=>'请从合法链接参与游戏!'));
		}//endif 验证flash请求是否正确
	}

 code review之后:

 

	/**
	 * 获取用户信息
	 * @return code    string    返回信息代码
	 *         message string  返回信息
	 *         qq  string  用户QQ
	 *         link    string  邀请好友参加活动的链接
	 *         score   string  活动当前的积分数
	 *         nick    string   用户昵称
	 *         wblog   string  微博关注数
	 *         num string  当前作品总数
	 *         pic array   作品地址
	 */
	public function uinfoAction(){
		$random = $this->request->getGetParameter('random');//随机数
		$pwd = $this->request->getGetParameter("pwd");//私钥
		//判断是否从合法链接参与游戏
		if($pwd!=md5("tenwowactqqcom@tenwow123".$random)){
			return json_encode(array("code"=>"2","message"=>"请从合法链接参与游戏!"));
		}
		//判断是否登录
		if(!TMAuthUtils::isLogin()){
			return json_encode(array("code"=>"1","message"=>"对不起,您还没有登录!"));
		}
		$qq = TMAuthUtils::getUin();//获取登录QQ
		$link = TMLibHtmlHelper::urlJump(TMConfig::BASE_URL,$qq,1,TMConfig::TAMS_ID);//获取邀请链接
		$service = new TMService();//创建操作数据的对象
		$info = $service->selectOne(array("FQQ"=>$qq),"FScoreCount,FNick","Tbl_User");//获取登录QQ昵称,活动积分
		$picCount = count($service->select(array("FQQ"=>$qq),"FUrl","Tbl_File"));//获取当前作品数
		$pic = array();//初始化图片地址数组
		$list = $service->select(array("FQQ"=>$qq),"FUrl","Tbl_File");//获取图片地址
		//由于select查询出来的是二维数组,要将其取出放到$pic中
		foreach($list as $li){
			$pic[]=TMConfig::BASE_URL."data/".$li[0];
		}
		//-----------还有获取微博关注数未开发wblog
		return json_encode(array("code"=>"0",
		                         "message"=>"成功拉取数据",
		                         "qq"=>"{$qq}",
		                         "link"=>"{$link}",
		                         "score"=>"{$info['FScoreCount']}",
		                         "nick"=>"{$info['FNick']}",
		                         "wblog"=>"100000",
		                         "num"=>"{$picCount}",
		                         "pic"=>"{$pic}"));
	}

 效果很明显。

2
3
分享到:
评论

相关推荐

    C语言中if-else语句的嵌套分析.pdf

    C语言中if-else语句的嵌套分析 C语言中if-else语句的嵌套分析是编程语言中一个重要的基础知识点。本文将对if-else语句的嵌套关系进行详细的分析和解释,包括if-else语句的基本概念、if-else语句的嵌套关系、if-else...

    04-v-if和v-else-if和v-else.vue

    04-v-if和v-else-if和v-else.vue

    c语言if elseif语句嵌套 使用方法详细解释

    c语言if elseif语句嵌套 复制网址到浏览器即可

    VS2015 if else for 代码折叠

    VS2015 if else for 代码折叠,VS2015 if else for 代码折叠,VS2015 if else for 代码折叠,VS2015 if else for 代码折叠,VS2015 if else for 代码折叠

    If-Else-Block-Refactoring:使用嵌套的ifelse代码块重构业务逻辑

    在`If-Else-Block-Refactoring`中,我们可以学习到几种重构嵌套`if-else`的方法: 1. **提炼函数(Extract Method)**:当`if`语句或`else`块包含大量代码时,可以考虑将这部分代码提取为独立的函数,以提高代码的...

    fj-ifElse:函数式 ifElse

    fj-ifElse 函数式 ifElse 安装 npm install fj-ifelse --save 用法 var ifElse = require ( 'fj-ifelse' ) ; ifElse ( ( x ) => x === true , ( x ) => t . ok ( x ) , ( ) => t . fail ( ) ) ( true ) ; var ...

    if else嵌套

    学习笔记

    elseif.js:嵌套ifelse语句

    在JavaScript编程语言中,`if...else`语句是用于条件控制的基本结构,它允许我们根据不同的条件执行不同的代码块。当我们需要在一个条件判断的基础上再进行更细致的判断时,可以使用嵌套的`if...else`语句。标题中的...

    freeMark if嵌套

    在某些情况下,我们可能需要在`<#if>`语句内部再嵌套`<#if>`,这就是所谓的`if`嵌套。 首先,让我们理解`<#if>`的基本语法: ```html <#if expression> <!-- 当expression为真时执行的代码 --> </#if> ``` 这里...

    VS2012 if else for 代码折叠

    VS2012 C# 将代码中的 if else for折叠插件

    if-elseif-else使用范例

    在编程语言中,`if-elseif-else`结构是一种用于条件判断的重要工具,它允许程序根据不同的条件执行不同的代码块。这个结构使得我们能够灵活地处理多种可能的情况,是编写逻辑控制流的基础。在这个"if-elseif-else...

    Java Methods-Boolean Expressions and if-else Statements.ppt

    Java 中的布尔表达式和 if-else 语句是非常重要的编程概念,本节将详细介绍布尔数据类型、if-else 语句、关系运算符、逻辑运算符、De Morgan’s Laws、短路运算符号、嵌套 if-else 语句、if-else-if 序列、switch ...

    c代码-4-3奇偶判断(if-else双分支)

    在这个“c代码-4-3奇偶判断(if-else双分支)”的例子中,我们将深入探讨如何利用if-else语句来实现这个功能。 首先,我们需要理解if-else语句的基本结构。在C语言中,if-else语句用于根据条件执行不同的代码块。它...

    if-else 三地址

    在编程语言的编译原理中,`if-else`条件语句是构建程序逻辑的基础,而三地址码(Three Address Code,TAC)是一种中间表示形式,用于简化编译器的中间阶段处理。本篇文章将深入探讨如何使用递归下降法来设计一个翻译...

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

    在Python编程语言中,`if-else`语句用于条件判断,它允许我们在满足特定条件时执行一段代码,否则执行另一段代码。然而,为了使代码看起来更简洁、优雅,有时我们会选择将`if-else`语句写在一行内。尽管这并不总是...

    运用IF-else

    在实际应用中,IF-else语句可以嵌套,形成更复杂的逻辑结构,例如: ```python if 条件1: # 如果条件1为真 if 条件2: # 执行这里 else: # 条件2为假时执行这里 else: # 条件1为假时执行这里 ``` 描述中的...

    Android中的工厂模式(减少if-esle和switch-case)

    在Android开发中,面对大量的对象创建,我们常常会遇到代码中充斥着`if-else`或`switch-case`结构的情况,这不仅使得代码难以维护,还降低了可读性。为了解决这一问题,设计模式应运而生,其中工厂模式是一种常用的...

    SSH笔记-set标签、push标签、if/elseif/else标签、iterator标签、sort标签

    本文将详细讲解SSH框架中涉及到的五个关键标签:`set`、`push`、`if/elseif/else`、`iterator`以及`sort`,并结合它们在实际应用中的用法进行深入探讨。 ### `set`标签 `set`标签在Struts2框架中用于在Value Stack...

    编译原理 if-else条件语句的翻译(Java)

    总结起来,Java中的if-else条件语句和循环嵌套是程序设计中的基础元素,而LR分析方法则是编译器实现这些元素的关键工具。通过编译原理的学习,开发者可以更深入地理解代码的运行机制,提升编程技能,同时也为更高级...

Global site tag (gtag.js) - Google Analytics