我如何压缩这个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;
}
}
答案 0 :(得分:4)
首先,我会选择返回一个布尔或字符串,但不是两者都有,原因是有一个均质接口。
但是如果出现错误,可以使用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;
}
答案 1 :(得分: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;
}
答案 2 :(得分: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;
}
答案 3 :(得分: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条件有助于提高可读性,顺便提一下也减少了行数,但我认为后者并不重要。此外,默认值。