>백엔드 개발 >PHP 튜토리얼 >PHP 코드 사양에 대해 질문하기

PHP 코드 사양에 대해 질문하기

WBOY
WBOY원래의
2016-10-11 14:23:381141검색

우선 이렇게 작성된 함수가 있습니다.

<code>function  exam(){
    //从数据库获取数据。
    $records = $aModel->where(['type' => 1])->get();
    
    if(empty($records))  return false;
    
    $newRecord = $bModel->map();
    foreach($records as $item){
        $newRecord->name = $item->name;
        $newRecord->age = $item->age;
        try{
            $bModel->insert($newRecord);
        }
        catch(\Exception $e){
            \Log::catch($e);
        }
    }
    return true;
}
</code>

그러면 이 함수는 이렇게 호출됩니다.

<code>if(true !== exam()){
    echo "表更新失败";
    return false;
}</code>

PHP 경험이 있는 분들은 한 번 살펴보세요. 꽤 어색해 보이는 부분이 몇 군데 있습니다.

  1. exum()함수에서 return의 위치가 적절한가요?

  2. 함수 반환 유형이 확실하지 않은 경우 실행이 완료되면 결과가 반환되고, 실행이 실패하면 false가 반환됩니다. 이 경우 결과가 유사하다고 판단하는 것이 적절한지 여부를 판단합니다. if(false === exam())에 전화할 때.

  3. if 판단에서 함수를 실행하면 코드의 가독성이 떨어지는 것 같은 느낌이 듭니다.

답글 내용:

우선 이렇게 작성된 함수가 있습니다.

<code>function  exam(){
    //从数据库获取数据。
    $records = $aModel->where(['type' => 1])->get();
    
    if(empty($records))  return false;
    
    $newRecord = $bModel->map();
    foreach($records as $item){
        $newRecord->name = $item->name;
        $newRecord->age = $item->age;
        try{
            $bModel->insert($newRecord);
        }
        catch(\Exception $e){
            \Log::catch($e);
        }
    }
    return true;
}
</code>

그러면 이 함수는 이렇게 호출됩니다.

<code>if(true !== exam()){
    echo "表更新失败";
    return false;
}</code>

PHP 경험이 있는 분들은 한 번 살펴보세요. 꽤 어색해 보이는 부분이 몇 군데 있습니다.

  1. Exam()함수에서 복귀 위치가 적절한가요?

  2. 함수 반환 유형이 확실하지 않은 경우 실행이 완료되면 결과가 반환되고, 실행이 실패하면 false가 반환됩니다. 이 경우 결과가 유사하다고 판단하는 것이 적절한지 여부를 판단합니다. if(false === exam())에 전화할 때.

  3. if 판단에서 함수를 실행하면 코드의 가독성이 떨어지는 것 같은 느낌이 듭니다.

  1. 시험 복귀() 예외가 발생하면 그냥 false를 반환하면 되지 않나요?

  2. 일반 반환 유형이 bool 유형인 경우 세 번째 유형을 추가하는 것은 권장되지 않습니다. 언급한 방법을 사용하여 결정할 수는 있지만 권장되지 않습니다

  3. 가독성 문제는 if에 있어서가 아니라 함수 이름에 문제가 있기 때문입니다. bool 유형을 반환하려면 다음과 같이 표현하는 것을 추가하는 것이 좋습니다.

<code class="php">if(false === isExam()){
    echo "表更新失败";
    return false;
}</code>

읽을 수 있는 책 추천 :
https://book.douban.com/subje...

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.