我将如何压缩这个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;
}
}
首先,我会在返回布尔值或字符串之间进行选择,但不能同时返回两者,原因是要有一个均匀的接口。
但是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;
}
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;
}
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;
}
我会这样写:
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 条件有助于可读性,顺便也减少了行数,但我认为后者并不重要。此外,默认值。