インデントをなるべく浅くするテクニック
こんにちは satoです。
インデントが浅いと、コードが見やすいです。
インデントが浅くなりそうなテクニックを紹介します。
時と場合にもよりますし、賛否両論もあると思いますが、寛大な目でみてやってください。
1)処理の判定は正常じゃない場合を書く
//before
$data = getdata();
if ($data) {
なんか複雑な処理;
} else {
return false;
}
//after
$data = getdata();
if (!$data) {
return false;
}
なんか複雑な処理;
2) array か どうかを判断する場合は array にして処理をする
//before
if (is_array($args)) {
foreach() ...
} else {
....
}
//after
if (!is_array($args)) {
$args = array($args);
}
foreach ...
3) 単純な代入が伴うif文には 三項演算子を使う
//before
$data = getdata();
if (isset($data['id'])) {
return $data['id'];
}
return false;
//after
return isset($data['id']) ? $data['id'] : false;
4) forの中での特別処理は continue を使用する
//before
foreach ($value as $v) {
if ($v % 2 == 0) {
複雑な処理;
}
}
//after
foreach ($value as $v) {
if ($v % 2 == 1)
continue;
複雑な処理;
}
5) 複数条件の if は switch で書く
//before
if ($v == 'A' || $v == 'AB' || $v = 'B') {
処理1;
}
else if ( $v == 'O') {
処理2;
}
else {
処理3;
}
//after
switch($v) {
case 'A':
case 'AB':
case 'B':
処理1;
break;
case 'O'
処理2;
break;
default
処理3;
break;
}
他にもナイスなアイディア募集中です!

コメント
>インデントをなるべく浅くするテクニック
「1TABにする」ってボケようと思ったら、とっくに1TABになってるよこのシト!っていうのは卑怯だと思いますプンプン。
投稿者: Bar | 2006年08月18日 00:14
初めまして。
僕は2)のケースはいつもこうやってますが、どうでしょう。
foreach ((array)$args as $a){
....
}
投稿者: akkun_choi | 2006年08月18日 04:55
akkun_choi さん,
$args がオブジェクトのとき,
(array)$args と array($args) では,結果が違ってしまいます.
また,
foreach (array($args) as $v)
とすると $args が array のときに,array の array になってしまうので, 2)のケースのように事前に is_array() で確認しなければならないと思います.
投稿者: ttsuruoka@unoh | 2006年08月18日 10:47
オブジェクトを配列にキャストすると、オブジェクトを元にした配列になってしまうのですか。それは知りませんでした。
$argsが配列になるべきところを、nullかスカラーであってもforeachが動くように…という場合に使ってたのですが、注意が必要ですね。
投稿者: akkun_choi | 2006年08月19日 02:49