2012-05-10 7 views
1

このPHPメソッドでは、どのようにコードを少なくしても読みやすく機能的にすることができますか?このコードであなたは何を変えますか?PHPの文字シーケンスチェック機能

public function charCount($string, $max, $min) { 

    $stringCount = strlen($string); 

    if(isset($max) || isset($min)) { 
     //Testing Max Chars 
     if($stringCount > $max) { 
      return 'String length: ' . $stringCount . "<br /> 
        Max Chars: " . $max . "<br /> 
        Error: To Long"; 


     } 
     else if($stringCount < $min) { 
      return 'String length: ' . $stringCount . "<br /> 
         Min Chars: " . $max . "<br /> 
         Error: To Short"; 
     } 
     else { 
      return true; 
     } 
    } 

    else { 
     return true; 
    } 
} 
+1

、すべきではない '分文字数: "。$最大"
'の代わりに '$のmax'の' $のmin'こと? – Wiseguy

+0

また、「長すぎます」 - 余分な「o」があるはずです。 – Halcyon

答えて

4

最初にブール値またはを文字列で返すかどうかを選択しますが、どちらも文字列ではなく、ホモジニアスインターフェイスを使用する理由があります。

ただし、エラーの場合はfalseを使用できます。

私はこのような何かのために行くよ:1の場合

function charCount($string, $min = null, $max = null) { 
    $length = strlen($string); 

    $result = false; 

    if ($max && $length > $max) { 
     $result = sprintf('String length: <br />Max Chars: <br />Error: To Long', $length, $max); 
    } 

    if ($min && $length < $min) { 
     $result = sprintf('String length: <br />Min Chars: <br />Error: To Short', $length, $min); 
    } 

    return $result; 
} 
3
public function charCount($string, $max = false, $min = false) { 

    $stringCount = strlen($string); 

    if($max!==false && $stringCount > $max){ 
     return 'String length: ' . $stringCount . "<br />Max Chars: " . $max . "<br />Error: To Long"; 
    } 

    if($min!==false && $stringCount < $min){ 
     return 'String length: ' . $stringCount . "<br />Min Chars: " . $min . "<br />Error: To Short"; 
    } 

    return true; 
} 
+0

常に '{'と '}'を使用してください。私はあなたがこのように書くことができることを知っていますが、このコードはバグに非常に敏感です(私は経験から話します)。 – Halcyon

+0

明快にするために{}を追加しました – Danny

0
public function charCount($string, $max, $min) { 

$stringCount = strlen($string); 

if(isset($max) || isset($min)) { 
    $return_value = ''; 
    //Testing Max Chars 
    if($stringCount > $max) { 
     $return_value = 'String length: ' . $stringCount . "<br /> 
       Max Chars: " . $max . "<br /> 
       Error: Too Long"; 


    } 
    else if($stringCount < $min) { 
     $return_value = 'String length: ' . $stringCount . "<br /> 
        Min Chars: " . $min . "<br /> 
        Error: Too Short"; 
    } 
    return $return_value; 
} 
return true; 
} 
0

私はこのように書くと思います:私はそれは罰金だと思うそれ以外

public function charCount($string, $max = false, $min = false) { 

    $stringCount = strlen($string); 

    if (false !== $max && $stringCount > $max) { 
     //Testing Max Chars 
     return 'String length: ' . $stringCount . "<br /> 
       Max Chars: " . $max . "<br /> 
       Error: To Long"; 
    } else if (false !== $min && $stringCount < $min) { 
     return 'String length: ' . $stringCount . "<br /> 
        Min Chars: " . $max . "<br /> 
        Error: To Short"; 
    } else { 
     return true; 
    } 
} 

。パフォーマンスがの場合、実際にはという問題が発生しない限り、読みやすさは常に優先されます。この場合、if-else条件を単純化することは可読性を助長し、行の数を減らしますが、後者は重要ではないと主張します。また、デフォルト値。

関連する問題