PHP Chaos

好代码习惯,减少代码的怪味 - Part 2

2017-05-31  本文已影响9人  xiaojianxu

11、if 条件语句块中,放置的代码过长。(其实,有更长的代码,导致必须要滚动侧边滚动条,才可以继续阅读。)

实例代码:
该代码段中的 if 只是,为了判断是否为 post 传输方法。建议,直接修改为非 post 提交方式,那就返回提示,并退出代码执行。

 public function is_task_json()
    {
        if ($this->input->method() == 'post') {
            $post = $this->input->post();
            $start = date('Ymd', strtotime($post['taskstart_time']));
            $end = date('Ymd', strtotime($post['taskend_time']));
            if ($start == $end) {
                echo 3;
                exit;
            }
            $group = '';
            $first = $num = 0;
            $table = 'product a';
            $fields = 'b.id,a.ASIN,a.type,b.tasktime';
            $order = 'b.tasktime ASC';
            $join = array(array('product_num b', 'b.productid = a.id', 'left'));
            $where = array('a.ASIN' => $post['ASIN'], 'a.type' => $post['type'], 'a.platform' => $post['platform'], 'a.company_id' => $this->company_id, 'a.status' => 2);
            $sql1 = 'b.tasktime between ' . strtotime($post['taskstart_time']) . ' and ' . strtotime($post['taskend_time']);
            $this->db->where($sql1);
            $list = $this->Data_model->getJoinData($table, $join, $where, $fields, $order, $group, $first, $num);
            echo $list ? 1 : 2;
        }
    }

12、返回响应的是 1, 2, 3 ...,这样没有注释和语义的数字。

 if (!$res1) {
    echo 1;
    exit;
} else {
    echo 2;
    exit;
}

13、可以使用三元运算符来,代替简单的 if...else 。

//优化前:
if ($post['type'] == 1) {
    $fast_comment1 = 2;
} else {
    $fast_comment1 = $post['fast_comment'];
}

if ($post['bind_type'] == 1) {
    $fast_comment2 = 2;
} else {
    $fast_comment2 = $post['bind_fast_comment'];
}

// 优化后:
 $fast_comment1 = ($post['type'] == 1) ? 2 : $post['fast_comment'];
 $fast_comment2 = ($post['bind_type'] == 1) ? 2 : $post['bind_fast_comment'];

14、冗余的条件判断,要善于使用内置函数 empty(),is_null(),is_int(),is_string() 等等。

// 优化前:
$value['create_time'] = $value['create_time'] != '' ? date('Y-m-d H:i:s',$value['create_time']) : '' ;

// 优化后:
$value['create_time'] = empty($value['create_time']) ? '' : date('Y-m-d H:i:s',$value['create_time']);
上一篇下一篇

猜你喜欢

热点阅读