2014年2月13日木曜日

PHPなど動的型付け言語では変数名や関数名は長くていい

PHPなどの動的型付け言語って、Javaなどの型をはっきりさせる言語と違ってEcliseなどの統合開発環境による補完や定義の参照などが効きにくいところがある。

例えば、Javaの場合はインスタンスがコード中に登場したら、型が決まっているからメソッドの候補は自動的に決まり、例えばEclipseを使っていると候補がきっちり出てきてくれる。ところが、PHPの場合は、それがどのクラスのインスタンスなのか、いやそもそもインスタンスなのかどうかすら決まっていないから補完の候補が出せなかったりする。もちろん、EclipseのPDTなんかだと、ある程度文脈を読んでくれるから補完も出せるが、それだっていつも出せるわけじゃない。ということで、PHPを使う人間はしばしば、クラスの定義を自分で探して、どんなメソッドがあるか直接コードから探したりすることがある。

あるいは逆に、コードを読んでいて登場したメソッドがどんな働きをするのか、Javaであれば定義元にショートカット一発で飛んでいけるような場合も、PHPだとそれができないなんてこともある。そういうときも、メソッドを自分で探すことになる。

今述べたのはメソッドの例だけれども、これはインスタンスとか変数名とか関数でも同じようなことが言えて、要するに動的型付け言語では、候補探しや定義元の参照をしたいときには、既存のコードの中から探すという行為が発生しがちなのだ。

その際には既存のコードを一つ一つ探すのは大変だから、検索することになる。Eclipseの検索機能はPHPで開発してる時には上記の目的でよく使う。コードを横断的に検索し、結果を分かりやすく表示してくれるから、統合開発環境の検索機能はコマンドラインでgrepやfindを打つよりもずっと使いやすい。

その時に、スコープが分かれているからといって同じ変数名・関数名・メソッド名などをコードの色々な箇所で使っていると、目的のものを探し出しにくい。いや、もちろん言語仕様的には全く問題ないし、むしろ同じ目的の変数・関数・メソッドの名前を統一したほうがコード体系としては筋が通っているのかもしれない。だがしかし、開発をスムーズに進めていく上では、別の場所に登場した変数名・関数名・メソッド名は、たとえ同じ目的でも違う名前を付けていった方がいいと思う。

よって、区別のために色々と接頭辞や接尾辞をつけていくという意味で、変数名・関数名・メソッド名等は長くていいっていうことになるのだ。だから僕はPHPのコードを書く時にはわざと長めの関数名をつけたりするんだよね。

※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうそ。

0 件のコメント:

コメントを投稿