想要使用较少的行重新使用以下代码,而不是重复它.Ex将代码放在某个函数等中。因此代码看起来很干净并且优化。
if($pos_Year) {
preg_match('/^([=<>!]+)([0-9]+)$/', $pos_Year, $tokens);
$operator = $tokens[1];
$operand = $tokens[2];
$ck_year = create_function('$value', '
$operand = '.$operand.';
switch("'.$operator.'") {
case "==": return ($value==$operand);
case "!=": return ($value!=$operand);
case "<": return ($value<$operand);
case "<=": return ($value==$operand);
case ">": return ($value>$operand);
case ">=": return ($value>=$operand);
default: throw new Exception("invalid operator");
}');
}
if($pos_Month) {
preg_match('/^([=<>!]+)([0-9]+)$/', $pos_Month, $tokens);
$operator = $tokens[1];
$operand = $tokens[2];
$ck_month = create_function('$value', '
$operand = '.$operand.';
switch("'.$operator.'") {
case "==": return ($value==$operand);
case "!=": return ($value!=$operand);
case "<": return ($value<$operand);
case "<=": return ($value==$operand);
case ">": return ($value>$operand);
case ">=": return ($value>=$operand);
default: throw new Exception("invalid operator");
}');
}
$ck_year(2014);
$ck_month(6);
答案 0 :(得分:0)
&#34;规则&#34;删除重复或几乎重复的代码很简单: 1)找到类似的代码,差异很小或没有差异 2)将代码封装为函数或方法 3)用传递给函数/方法的参数替换差异或潜在差异。
我缺乏背景,特别是对于&#34; $ value&#34;和#34; $令牌&#34;变量,但在你的情况下,代码非常相似,只有一个参数(如果2个提到的变量也改变,可能是2或3)。你甚至不需要&#34; if&#34;函数中的条件 - 它应该在外面(如果有的话):
function check_value($theValue)
{
preg_match('/^([=<>!]+)([0-9]+)$/', $theValue, $tokens);
$operator = $tokens[1];
$operand = $tokens[2];
$ck_month = create_function('$value', '
$operand = '.$operand.';
switch("'.$operator.'") {
case "==": return ($value==$operand);
case "!=": return ($value!=$operand);
case "<": return ($value<$operand);
case "<=": return ($value==$operand);
case ">": return ($value>$operand);
case ">=": return ($value>=$operand);
default: throw new Exception("invalid operator");
}');
}
$ck_value(2014);
$ck_value(6);