2012-05-10 60 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',而不是'$ max'? – Wiseguy

+0

此外,「太長」 - 應該有一個額外的「o」那裏。 – Halcyon

回答

4

首先,我會選擇返回一個布爾型一個字符串,但不是兩者,原因是有一個homogen接口。

但是,如果出現錯誤,可以使用false

我會去這樣的事情:

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條件有助於可讀性和順便也減少了行數,但我認爲後者並不重要。此外,默認值。