よくあるださいコードの殺し方

  • before;
    • 正直、この書き方をするプログラマはすごく多い。日本の職業プログラマの半数以上はこれでお茶を濁しているのではないかと思う。ぜひ別業種への転職をおすすめしたい。
$hoge = '';
if ($aiueo == 1) {
	if ($hoge == '') {
		$hoge .= '1';
	} else {
		$hoge .= ', 1';
	}
}
if ($kakikukeko == 1) {
	if ($hoge == '') {
		$hoge .= '2';
	} else {
		$hoge .= ', 2';
	}
}
if ($sasisuseso == 1) {
	if ($hoge == '') {
		$hoge .= '3';
	} else {
		$hoge .= ', 3';
	}
}
if ($tatituteto == 1) {
	if ($hoge == '') {
		$hoge .= '4';
	} else {
		$hoge .= ', 4';
	}
}
if ($naninuneno == 1) {
	if ($hoge == '') {
		$hoge .= '5';
	} else {
		$hoge .= ', 5';
	}
}
$hoges = array();
if ($aiueo) {
	$hoges[] = 1;
}
if ($kakikukeko) {
	$hoges[] = 2;
}
if ($sasisuseso) {
	$hoges[] = 3;
}
if ($tatituteto) {
	$hoges[] = 4;
}
if ($naninuneno) {
	$hoges[] = 5;
}
$hoge = join(', ', $hoges);
  • 単純なifは省略できる
    • 途轍もなください実装の処理系では正しく動かないかもしれないけどまあ大丈夫だろう
    • この書き方は認められない現場も多そう
$hoges = array();
$aiueo && $hoges[] = 1;
$kakikukeko && $hoges[] = 2;
$sasisuseso && $hoges[] = 3;
$tatituteto && $hoges[] = 4;
$naninuneno && $hoges[] = 5;
$hoge = join(', ', $hoges);
  • ループにしてみる。もっと行数が増えると有効
$hoges = array();
$fugas = array(
	'aiueo' => 1,
	'kakikukeko' => 2,
	'sasisuseso' => 3,
	'tatituteto' => 4,
	'naninuneno' => 5
);
foreach ($fugas as $key => $value) {
	if ($$key) {
		$hoges[] = $value;
	}
}
$hoge = join(', ', $hoges);