Perl条件文の可読性
プログラミング一般論として可読性の高いコーディングが求められますが、可読性の良い悪いを判断するのが難しいケースがままあります。最近、可読性の良さについて意見が別れたことがありました。実際はもう少し複雑だったのですが、ポイントを纏めると以下のような条件判定の部分でした。
my $foo = # +{ v => 1 }; # +{ v => 2 }; # +{ v => 3 }; # +{ v => 4 }; +{ v => 5 }; sub check_1 { my $foo = shift; if ( $foo->{v} == 1 || $foo->{v} == 2 || $foo->{v} == 3) { return 1; } return undef; } sub check_2 { my $foo = shift; return $foo->{v} == 1 ? 1 : $foo->{v} == 2 ? 1 : $foo->{v} == 3 ? 1 : undef ; } print 'check_1 : ' . check_1($foo) . "\n"; print 'check_2 : ' . check_2($foo) . "\n";
if文を使うか、条件演算子を使うかということです。
私は条件演算子の派閥(笑)です。
条件演算子はコードをテーブル形式で記述できるので、理解しやすいと思っています。
結局のところ、最近のperlではgiven whenがあるので、これが使える環境であれば、これを使うのがベストなんでしょうけど。
下記をみると他にも記述方法があるみたいですね。
http://stackoverflow.com/questions/3898836/should-i-use-perls-conditional-operator-as-a-switch-case-statement-or-ins
ただ、別の観点としてundefをreturnしている部分はよくないですが。。