苦労はしないにこしたことはない

努力すればできる、苦労するのも仕事のうち、そういう話は聞き飽きた。しなくていい苦労を背負い込むことを正当化するのは間違っている。

そういうわけで、書いてこそコード | さくらたんどっとびーずへの返答。トラックバックありがとうございます。意見は食い違っていますが、楽しませていただいてます。

さきにまとめ。

  • UKTKKNSHINFなネーミングは読めないからダメ
  • XXXすれば読めるよ、と言われても本来不要なXXXをしなければ読めない時点でアウト
  • 無駄作業は許容すべきじゃない

そして、詳細は以下。

さくらも昔 UKTKKNSHINF みたいな命名規則持ってるプロジェクトで仕事したことあるの。この手の名前って確かに変だとわ思うけど別に読みにくいって程じゃ無いと思ってるんだけど。それにこの程度の命名規則覚えるの仕事の範疇だと思うし。

書いてこそコード | さくらたんどっとびーず

俺は前記事でこう書いた。

UKTKKNSHINFがダメな理由は、それが読めないからである。

コードは読めなければならない - idesaku blog

読みにくいのではない、読めないのだ。

なぜなら、情報が欠落しているから。

例えばKNSHが"禁止"だとなぜわかる?"研修"かもしれないし、"監視"かもしれない。また、KNSHで一単語だとなぜわかる?UKTKKNで"受付期間"を意味しているかもしれない。NISIRTとかSYSYSBJTYPLCという変数があったとして、これが何を意味するか簡単にわかる?*1推測が付くにしても、その推測が正しいと確信できる?

したがって、

つまるところ読みやすさなんて相対的なものなんだから、どっかで線引きしなきゃいけないでしょ。

書いてこそコード | さくらたんどっとびーず

線引きもクソもない。実際のところ読みやすいか読みにくいかという話ですらない。繰り返すが、UKTKKNSHINFなコードは読めないのだ。だから、そんなネーミングは"ひどすぎる"と評価してなんら問題はない。

そして、もともと読めないコードを読めるようにするためには、ご理解いただいているように、事前に"命名規約を覚える"などの準備をしなければならない。しかし、それは本来不要な作業だと思う。UKTKKNSHINFなネーミングが"ひどすぎる"ゆえに発生している無駄な作業なのだ。例えばuketsuke_kinshi_infoであればそれが受付禁止情報であることは命名規約を知らなくてもわかる。

そうした無駄な事前準備を行うことも仕事の範疇、大いに結構なことである。しかし、そうした無駄を場当たり的な人の努力で補って良しとする思考は常に間違っている。本来不要な作業なのだから、無くせるようにしていくべき。たとえ今は自分の努力/我慢で乗り切るしかないとしても、それを安易に許容すべきじゃない。ダメなものはダメというべき。

そうした無駄を無くすために格別に高い能力が要求されるのであれば、仕方がないとあきらめもつく。しかし、ネーミングに気をつける程度のことはハッカーじゃなきゃできないような高度なことじゃない。本来誰でも解消できる問題なのだ。だから無くしておいてしかるべきだと思うし、放置状態にして取り返しの付かないところまでこさせたから、元々書いたやつおよびそれを良しとした奴らは無能だと言うのだ。

それと。

これ、lex とかで字句解析プログラム作って置き換えちゃえば簡単に解決するじゃん。

ご意見ありがとうございます。検討してみます。

*1:答えはいわないでおこう。