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']);
网友评论