关于编码风格的比较【以个税计算为例】

本文对比了两种新版个税计算方案,方案一通过条件判断直接计算,方案二使用配置数组遍历计算,后者更易扩展。文章强调了作为成熟程序员应注重代码复用性和可扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在有一个需求,需要计算新版个税方案下需要缴纳的个税。

方案一

function fun($salary){
		if($salary <= 5000){
        	$now_tax = 0;
        }else if($salary > 5000 && $salary <= 8000){
            $now_tax = ($salary - 5000) * 0.03;
        }else if($salary > 8000 && $salary <= 17000){
            $now_tax = 3000 * 0.03 + ($salary - 8000) * 0.1;
        }else if($salary > 17000 && $salary <= 30000){
            $now_tax = 3000 * 0.03 + 9000 * 0.1 + ($salary - 17000) * 0.2;
        }else if($salary > 30000 && $salary <= 40000){
            $now_tax = 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + ($salary - 30000) * 0.25;
        }else if($salary > 40000 && $salary <= 60000){
            $now_tax = 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + ($salary - 40000) * 0.3;
        }else if($salary > 60000 && $salary <= 85000){
            $now_tax = 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + 20000 * 0.3 + ($salary - 60000) * 0.35;
        }else($salary > 85000){
            $now_tax = 3000 * 0.03 + 9000 * 0.1 + 13000 * 0.2 + 10000 * 0.25 + 20000 * 0.3 + 25000 * 0.35 + ($salary - 85000) * 0.45;
        }
        return $now_tax;
}        

方案二

function fun($salary){
    global $config;
    $config = array(
        ['base' => 5000,'rate' => 0.03],
        ['base' => 8000,'rate' => 0.1],
        ['base' => 17000,'rate' => 0.2],
        ['base' => 30000,'rate' => 0.25],
        ['base' => 40000,'rate' => 0.3],
        ['base' => 60000,'rate' => 0.35],
        ['base' => 85000,'rate' => 0.45],
    );
	$now_tax = 0;
	foreach($config as $k => $v){
	    if($salary <= $config[0]['base']){
	        return $now_tax;
        }else if($k > 0){
	        if($salary < $v['base']){
	            $now_tax += ($salary - $config[$k - 1]['base']) * $config[$k - 1]['rate'];
	            break;
            }else{
	            $now_tax += ($v['base'] - $config[$k - 1]['base']) * $config[$k - 1]['rate'];
            }
        }
    }
    return $now_tax;
}

当然,看完方案二,很容易联想到可以用递归的思路来写,不过相对而言,性能会比方案二低一些。

对比两个方案,很容易看出优劣,方案二的可扩展性会更强一些。

作为一个成熟的码农,需要考虑得更多一些,代码的复用性,可扩展性,后期需求的变更等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值