きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

あまり出来の良ろしくないコーディングルールとか

ネットでも何でも良く目にする話題ではあるのですが、今日、どこかのBlogで話題になっているのを目にしたので、ちょっと思っていることを書いてみるテスト。(すみません、どこで見たのか忘れました。仕事中、調べ物してて引っかかったところでちょっと目にしたという感じだったので。)


コーディングルール自体は、一人で趣味プロやってるならともかく*1、チームで仕事してたりすると寧ろ欲しくなるし、そうでない場合であってもそのコードは自分の専有物では無くて、何らか納品先なり所属している組織の物だったりするわけなので、例えばPerlやCなんかで、何処ぞの某コンテストに出品するかの如くのコードを書くことは、実際やるヤツが居るかどうかは別として止めて置く必要があるとおもいます。


というわけで、コーディングルール自体は必要だと思います。…思うのですが、良く話題になる「三項演算子禁止」とか「再帰呼び出し禁止」とか、何でしょう、言語の基本機能を否定するようなヤツはナンセンスも良いところだと思うわけです*2


そういうルールについては、『後々誰がメンテすることになるか解らんから』とか『ある程度のレベルの人でも問題なく読めるように』とか、解ったような解らないような理由が添えられていたりするわけです。が、多くのプログラマは思っていると思うんです。それは違うぞ、と。


それってつまり、こういう事ですよ。『うちの会社には小学6年生までの漢字しか読めない人が多いので、書類を作成する時には小学校で習う漢字しか使っちゃいけませんよ』と言ってることと同義だよ、と。で、『中学生以上で習う漢字を知ってる人も、そのレベルの人に合わせて仕事しようね』と言っているのと同じですよ、と。こう思うわけです*3


日本人としての必需品で常識である漢字と、専門知識であるプログラミングを一緒にするな、って?


何をおっしゃいます、プログラマにとって言語機能って言うのは必需品で常識であって、生活を支える糧を得る上で無くてはならないもの、なのではないですか?これを押し通すってことはつまり、『うちでは必需品で常識レベルのものを備えていない者を組織の平均レベルとして想定していて、かつ、そこから引き上げるような教育も放棄します』、と、そう言っているのと同義だと思いませんか?さらに言うと、それの機能を、そのコードを見るまで知らなかった人が居たとして、その人がそれを知って勉強してレベルアップするという可能性を、完全に始めから放棄していると明言している事になるではないですか?


まあ、別に新しい意見でも無いですし、ふと文字にしておこうと思った程度のことなので、特にこれ以上の考察とかまとめとか無いのでこれで終わります。

が、プログラマを名乗るのであれば、読んでて解らない言語機能が出てきたら、そこに関わるならそこで勉強して習得しなければならない、と思います。というか、そうありたい*4


P.S.
汎用機文化のところがオープン系をやり始めたような所で未だ結構ある、『JavaやC#なのにクラス名やメソッド名がプログラムに割り振られたIDとか良くわかんない英数の記号で命名する規則があったり、あまつさえそれをExcelの台帳で管理しているようなルール』については*5、もう、そういう文化なのでどうしようもなくて、黒船とか来て文明開化しないと駄目なんじゃ無いかな、と思います。はい。

*1:いや、趣味プロならなおさら自分なりのルールが無いとやりにくいですね、メンテするのは自分だけだから、誰にも投げれないです。

*2:言葉だけ聞くとナンセンスに思えたりする事でも、局所的には理解出来ることも有るのですが、この手の言語機能の使用制限についてはなかなか納得出来る理由に出会える事は稀、というか、経験が無いような。

*3:当然、小学生が読むことを前提としたものを作る事を要求される職場は除外します。念のため。

*4:自分がそう出来ているかどうかは、棚の上の方放り投げますが

*5:知ってる人は知っていると思いますが、割と普通に有ります。先週も飲んでた友人某氏の職場がそういう文化で、良く愚痴を聞かされてますし、私自身、数年前に微妙に体感しております。