2

我将如何压缩这个 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;
    }
}
4

4 回答 4

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;
}
于 2012-05-10T18:34:23.160 回答
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;
}
于 2012-05-10T18:24:38.343 回答
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;
}
于 2012-05-10T18:25:21.290 回答
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 条件有助于提高可读性,顺便也减少了行数,但我认为后者并不重要。此外,默认值。

于 2012-05-10T18:25:39.997 回答