第60回 チーム開発におけるソースコード使い回しによる悲惨な例
チームで開発している場合に、ソースコードを再利用するのはよいことであろう。
だが今回ご紹介するのはの、起こってはならない最悪な例のひとつと言える。
次のような関数があったとしよう。
sub say { my $c = shift; print "$c" . "\n"; }
これは、
say('hoge');
で呼び出せる。
このソースがあったとき、
なにぃーー!!、名前付き引数で渡せないだとぉおおおおおおお!と憤慨したとしよう。
しかし、say はもう無事に動いてるのだし、これを利用しない手はない、そこで、
sub say_with_name { my $c = shift; say ($c->{'name'}); # ここで委譲 }
こういうソースが書ける。
こうすれば、
say_with_name ({name=>'hoge'});
で呼び出せる。
しかし、名前付きで呼び出すのなんて、ハッシュへのリファレンスを理解してないと使えないではないか!!!いったい君はなにを考えているんだ。という人がいたとして、次のように書き換える。
sub say_no_name { my $c = shift; say_with_name({ name => $c }); # ここで委譲 }
こうすれば、
say_no_name('hoge');
と普通に呼び出せる。
こうして、ソースの難読化は進んでいくんだ。