如何写易懂的代码--尽量不要再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];}//-----------还有获取微博关注数未开发wblogreturn json_encode(array("code"=>"0", "message"=>"成功拉取数据", "qq"=>"{$qq}", "link"=>"{$link}", "score"=>"{$info['FScoreCount']}", "nick"=>"{$info['FNick']}", "wblog"=>"100000", "num"=>"{$picCount}", "pic"=>"{$pic}"));}
?效果很明显。