そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

クソコードレビュー会なるものに参加してきた

f:id:blue1st:20160818210740j:plain

転職活動でもお世話になったCodeIQで↓のような問題があったので回答を出したところ、 レビュー会への招待が来ていたので行ってみた!

codeiq.jp


問題

出題はじゃんけんを行うプログラムをリファクタリングするという問題。

「標準入力として与えられた文字列を2人分のじゃんけんの手として解釈して勝敗を標準出力する」というもの。

元はnode.jsだったのだが、僕はjsが不慣れだったりもするのでperlで再現。

sub func02 {
    my ( $a, $b ) = @_;

    if ( $a eq 'g' ) {
        if ( $b eq 'c' ) {
            print "win";
        } elsif ( $b eq 'p' ) {
            print "lose";
        } else {
            print "draw";
        }
    }

    if ( $a eq 'c' ) {
        if ( $b eq 'p' ) {
            print "win";
        } elsif ( $b eq 'g' ) {
            print "lose";
        } else {
            print "draw";
        }
    }

    if ( $a eq 'p' ) {
        if ( $b eq 'g' ) {
            print "win";
        } elsif ( $b eq 'c' ) {
            print "lose";
        } else {
            print "draw";
        }
    }
}

sub func01 {
    my $line = shift;
    my ( $a, $b ) = split / /, $line;
    &func02( $a, $b );
}

my $line = <>;
chomp $line;
&func01($line);

すごーくベタな実装。

コード自体は目的どおり正しく動作するが・・・

続きを読む