根据 《改善既有的代码-重构》将其中java代码改为PHP代码
/**********我连变量名都是抄的************/
提炼函数1
原代码
$post_name = $_POST['name'];
if(isset($post_name) && !empty($post_name)){
......
}
$post_age = $_POST['age'];
if(isset($post_name) && !empty($post_name)){
......
}重构后
$post_name = $_POST['name'];
if(isSetOrEmpty($post_name)){
......
}
$post_age = $_POST['age'];
if(isSetOrEmpty($post_age)){
......
}
function isSetOrEmpty($value){
if(isset($value) && !empty($value)){
return true;
}else{
return false;
}
}提炼函数2 清除不必要的注释
原代码
function printOwing(){
//print banner
echo '**************************<br/>';
echo 'Banner<br>';
echo '**************************<br/>';
//print details
echo 'name:Lili';
echo 'amount:'.getOutstanding();
}重构后
function printOwing(){
printBanner();
printDetails(getOutstanding());
}
function printBanner(){
echo '**************************<br/>';
echo 'Banner<br>';
echo '**************************<br/>';
}
function printDetails($outstanding){
echo 'name:Lili';
echo 'amount:'.$outstanding;
}将函数内联化
如果一个函数的逻辑太简单,则把其中的代码移到调用它的代码,取消这个函数
原代码
function getRating(){
return moreThanFiveLateDeliveres() ? 2 : 1;
}
function moreThanFiveLateDeliveres(){
return $number > 5;
}重构后
function getRating(){
return ($number > 5) ? 2 : 1;
}将临时变量内联化
原代码
$price = $order['price'];
return $price > 1000; 重构后
return $order['price'] > 1000;引入解释性变量
原代码
if($_SESSION['is_login'] >=1 && $_SESSION['is_line'] >=1 && addLoginHistory() && $admin > 0){
......
}重构后
$isLogin = $_SESSION['is_login'] >=1;
$isLine = $_SESSION['is_line'] >=1;
$isAdmin = $admin > 0;
if($isLogin && $isLine && addLoginHistory() && $isAdmin){
......
}剖解临时变量
一个临时变量多次被赋值(不在循环中),应该针对每次赋值,创造独立的临时变量
原代码
$temp = 2*($height + $width);
echo $temp;
$temp = $height + $width;
echo $temp;重构后
$perimeter = 2*($height + $width);
echo $perimeter;
$area = $height + $width;
echo $area;以卫语句取代嵌套条件语句
原代码
function getPayAmount(){
$resoult = 0;
if($isDead){
$resoult = deadAmount();
}else{
if($isSeparated){
$resoult = separatedAmount();
}else{
if($isRetired){
$resoult = retiredAmount();
}else{
$resoult = normalPayAmount();
}
}
}
return $resoult;
}重构后
return 后面的语句将不会执行
function getPayAmount(){
if($isDead){
return deadAmount();
}
if($isSeparated){
return separatedAmount();
}
if($isRetired){
return retiredAmount();
}
return normalPayAmount();
}未完待续......