if-elsif-else の書き方
最近、個人的にいいなと思う if-elsif-else の書き方を見つけたのでメモしておく。nginx のソースと同じスタイルです。と言ってもパッとしないので例を見ていくと、
PBP / Programming Perl では
if ((my $color = <STDIN>) =~ /red/i) { $value = 0xff0000; } elsif ($color =~ /green/i) { $value = 0x00ff00; } elsif ($color =~ /blue/i) { $value = 0x0000ff; } else { warn "unknown RBG component"; $value = 0x000000; }
の形式で書かれている。
よくある他の書き方
このスタイルもよく見かける
if ((my $color = <STDIN>) =~ /red/i) { $value = 0xff0000; } elsif ($color =~ /green/i) { $value = 0x00ff00; } elsif ($color =~ /blue/i) { $value = 0x0000ff; } else { warn "unknown RBG component"; $value = 0x000000; }
nginx-style
nginx は C で書かれていますが、結構綺麗に書かれています。
if ((my $color = <STDIN>) =~ /red/i) { $value = 0xff0000; } elsif ($color =~ /green/i) { $value = 0x00ff00; } elsif ($color =~ /blue/i) { $value = 0x0000ff; } else { warn "unknown RBG component"; $value = 0x000000; }
この様に、 elsif と else の前に改行を一つ開けておくことで、
- 何よりもエディタでの特定ブロック内へのカーソル移動が楽になる
- vim では normal mode で { および } で前後の改行まで飛ぶ機能がある
- 各条件式のブロックを意識しやすくなる
- ブロック内のコード量が増えても認識しやすくなる
例
これらの理由から、最近は上記例のような書き方がお気に入り。