これは汚コード

とある会社のプログラムを見ていたのですが、こっ これは汚コード…と思うものに出会いました…。

PHPです。

//今期残高
if ( $i == $period->first )
//1期の場合、前月残高+今期残高
if ( isset($productPrices[$product_id][‘last_storage’]) )
$lastPeriodStorage = $productPrices[$product_id][‘last_storage’];
else
$lastPeriodStorage = 0;
else
//2,3期の場合、前期残高+今期残高
$lastPeriodStorage = $productPrices[$product_id][‘storage’][$i – 1];
$storageThisPeriod = $lotSum – $outSum;
$storage = $lastPeriodStorage + $storageThisPeriod;

 

ifの後の大かっこがない。なくても動きます。

インデントがない。なくても動きます。

 

だけど、最初のブロックの判定がどこまで行っているのかわかりにくいではないか。

この人の書き方は全部こうなってます。

でもさ、下記の方がわかりやすいよね。

//今期残高
if ( $i == $period->first ){
//1期の場合、前月残高+今期残高
if ( isset($productPrices[$product_id][‘last_storage’]) ){
$lastPeriodStorage = $productPrices[$product_id][‘last_storage’];
}else{
$lastPeriodStorage = 0;
}
}else{
//2,3期の場合、前期残高+今期残高
$lastPeriodStorage = $productPrices[$product_id][‘storage’][$i – 1];
}

$storageThisPeriod = $lotSum – $outSum;

$storage = $lastPeriodStorage + $storageThisPeriod;

ちなみに、この話はいろんなところで話題になってますね。

カッコをつけたコードはカッコわるいのか論争

if文の括弧は省略できるなら省略するのは是か非か

 

読んでも自分の身に降りかかってくるまでは、

「うーん、あった方がいいんじゃない?」

と他人事にしてましたが、いや、絶対にあったほうがいい!!と今回しみじみ思いました。