前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编码之道——代码的整洁与逻辑

编码之道——代码的整洁与逻辑

作者头像
蛋未明
发布2018-06-07 15:35:59
6540
发布2018-06-07 15:35:59
举报
文章被收录于专栏:蛋未明的专栏蛋未明的专栏

编码之道——代码的整洁与逻辑

     大部分时候我们都提倡一句话——“代码越简洁越好”,很多时候大家误解了这句话的意思,代码的简洁不是简单。

个人觉得代码的简洁要注意的以下两点:


  • 1、不能省略代码,简洁不是简单;
  • 2、代码简洁的层面是抽象和具体;
  • 3、代码的逻辑一定要严谨;

像之前我老是一样他将代码的优化过程看作一件看电影的不。这里我也将整个代码的优化过程,举例为一个带女朋友去看电影,然后需要告诉女朋友如何去看电影的过程。

代码1-1表示的过程是

     XX,我们去看电影吧,然后回来。

对于这个过程我们只看到了一个简单的目的,但是具体的一些细节我们忽略了,比如我们几点去看电影,在哪里看电影,去看什么电影等

代码1-1:

    //json from clinet is like {'name':'danhuang', 'age':23, 'other':{'t':'a'}}
     $mystr = $_GET['json'];
     $jsonArray = json_decode($mystr, true);
     $name = $jsonArray['name'];
     $age = jsonArray['age'];
     array_merge(array(), jsonArray['other']);

 对于这段代码不知道大家的感觉是什么,不够严谨,代码简单,容易出现bug。


接下来我们做一些改变,代码1-2表示的过程是:

     我们6:00从学校的门口出发,你先上的士,我坐后排右边,你坐后排左边,到了以后我先下车,然后帮你开车门,一起走路到电影院,我们先买中间的位置,如果两个人分开座位的我们就换一个位置,如果没有中间位置的,我们就做后排靠边,看电影时,我抱着你等等。

看到这个大家估计想笑,估计是女朋友听到这些后,会有一个想法“这男人要不得,太罗嗦啦!”。

从整个过程暴露了很多细节,其实这些细节完全可以封装,代码就像故事一样,暴露了一些我们不想看的过程、细节,比如说如何上车下车这种事情和看电影没关系,我们不关心这些,只有当女朋友问这些的时候,我们才告诉她这些细节,而不是直接暴露出整个过程。

 //json from clinet is like {'name':'danhuang', 'age':23, 'other':{'t':'a'}}
     if(!isset($_GET['json'])){
          echo "can not get json from clinet";
          exit;
     }
     $mystr = $_GET['json'];
     $jsonArray = json_decode($mystr, true);
     if(!$jsonArray){
          echo "can not json decode, mystr is not a json string";
          exit;
     }
    
     if(!(isset($jsonArray['name']) && isset(jsonArray['age']) && isset(jsonArray['other']))){
          echo "parameters error";
          exit;
     }
     $name = $jsonArray['name'];
     $age = jsonArray['age'];
     if(is_array(jsonArray['other'])){
          array_merge(array(), jsonArray['other']);
     } else {
          echo "other is not a array, please check it";
          exit;
     }

代码写完整以后,不知道大家是否已经看出,代码1-1存在的问题。虽然代码1-1的代码量很少,但是其中存在很多问题,特别是代码的逻辑严谨性。但是代码1-2还是存在问题,主要是代码不够简洁、抽象。这样的代码虽然很严谨,但是不是我们code需要的代码,我们应该将具体的东西抽象出来。


下面我们做进一步改进。可以理解为

     我们6点从学校出发,打的到XX电影院门口,然后差不多7点到那里,看画皮2,大概9点钟看完,然后我们打的回来。

这整个过程很简洁,可以清晰的表达了我们去看电影的过程,一些细节的问题,我们并不暴露出来,而是把他隐藏起来,并不是说我们不知道这些细节,当女朋友问我“我们是坐中间还是坐边上”,像这种细节,她问了,我们才回答,而不是说我们直接的将这个细节暴露在看电影的过程中。

     $arr = decodeStrFromClinet('json');
     $checkRet = checkIssetKeyArr($arr, array("name","age","other"));
     if($checkRet){
          $name = $arr['name'];
          $age  = $arr['age'];
          if(is_array($arr['other'])){
               array_merge(array(), arr['other']);
          }
     }
    
     function checkIssetKeyArr($arr, $keyArr){
          if(!(is_aray($arr) && is_aray($keyArr))){
               echo "parameteres error. function checkIssetKeyArr"
               return false;
          }
          for($i=0; $i<count($keyArr); $i++){
               $arrKey = $keyArr[$i];
               if(!isset($arr[$arrKey])){
                    echo "arr is not include " . $arrKey ;
                    return false;
               }
          }
     }
    
     function decodeStrFromClinet($clinetKey){
          if(!isset($_GET['json'])){
               echo "can not get json from clinet";
               return null;
          }
          $arr = json_decode($_GET['json'], true);
          if($arr){
               return $arr;
          }
          echo "json is null, the str from clinet is not a json string";
          exit;
     }

从整个过程我们可以看到,最终的代码是我们需要的。一个简单的赋值过程,可以让开发者学到很多东西。

写代码要严谨,严谨过程中要注重代码的整洁。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012年08月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档