2015の8日目の記事です。昨日は@papixさんの、「なぜGaiaxは新人研修の資料を全部Perl入学式に譲渡して「Perl入学式の教科書」として公開したのか?」と言う記事でした。いい感じに頑張っている企業の研修素材が公開され、自由に使えるのは本当に素晴らしいことだと思います。こんばんは、東京でサポーターをしております、@tsucchiです。先日、仕事で(多分)古いコードをリファクタリングしていたところ、こんな感じのコードを目にしました。入ってくるのはファイル名のフルパスのようでした。これは、ファイル名のフルパスから一番末尾の部分をとってくるコードです。いう関数を使うのが鉄板です。basename($filename);と、書くことができます。使った方が分かりやすく、綺麗なコードになるんじゃないかなぁ、と僕は思います。少なくとも、最初のコードを見た時は、「ん?これ何だ?」と数十秒考えてしまったので、少なくとも僕にとっては最初のコードは分かりにくいし、思考が止まるので、こういうのやめてほしいな、と思いました。使うように修正しました。言う変数名はこれだと意味分からなくて最悪ですね...。それも直さないと...)一方で、Perl入学式で学んでいる初心者の方にとっては、これは大きな違いではないし、重要ではない、とも僕は思っています。した時にも触れたのですが(正解はひとつ!じゃない!!)、その言語のビギナーであれば、「赤ちゃん言葉」であってもぜんぜん良くて、やりたいことがちゃんと実現できていることの方がよほど大事です。話は割と常識的で、知っているべきものだと思います。「自然言語処理の最新の論文で紹介されているアルゴリズムで使うべき変数名や関数名」とかだったら、たぶん僕がやったらめちゃくちゃな命名をしたり、使うべきライブラリや関数を使わずにコードを書いてしまう可能性は普通にあります。僕がぜんぜん知らないビジネスのドメインの用語とかでも同じかな。マイナーであまり使われてないモジュールとか、自分が慣れてないモジュールの場合も思考が止まりそうですね。いうの本当に微妙ですね。いうわけで、この出来事の教訓は何でしょうか?「ライブラリを使えば簡単に書けるものはそうすべき」そうですね。「ライブラリを知らなくても、とりあえず問題を解決すべきコードは、それはそれで正しい」それもそうです。「コードを書く人、読む人はどこまで対象のドメインに対する知識を持っているべきか?」うーん、難しいですね。結論なんて多分ないです。学ぶべきことは、誰にだって沢山あるのだと思います。以上、ふと見かけたちょっとヘンなコードとそれにまつわるお話でした。明日は@note103さんの砂場の話です。使い捨てみたいなスクリプトをどんな感じで管理しているのでしょうか。わたし、気になります。