2011年12月12日

クラス名の最後を Class にするコーディング・ルール

C言語を使ったことがある人なら、ドキュメントに関数名を書くときは、関数名の後に () を付けたくなると思います。 なぜなら、() を書くことで、関数であることを表現したいからです。

スクリプト言語 Python では、オブジェクトの生成をするときは、「クラス名(...)」と表現します。 C++ 言語や Java 言語では、「new クラス名」または「new クラス名(...)」と表現します。 new というキーワードを使うことで、new に続く単語が、クラス名であることがすぐに分かりますが、Python ではそうはいきません。 単語を検索しなければなりません。 つまり、一瞬で分かることが、10秒〜1分以上かかってしまうのです。

私が使っている、C言語によるオブジェクト記述法(COOL)では、クラス名_メソッド名() という関数名が基本なのですが、よく考えると、クラス名の部分が、クラスであることは、検索しなければ分かりません。 これはマズイと考えて、COOL の改良に取り掛かりました。

また、構造体のメンバー変数名の先頭に m_ を付けることは、MSの流儀を真似ていたのですが、読みやすいように this を省略しないようにしたところ、-> や . が必ずメンバー変数の前に付くため、m_ を付けないようになりました。 ただ、この場合、クラス名とメンバー変数名が衝突する可能性が高まった問題があって悩んでしました。

これらを解決して、もっと読みやすいコードになるようなコーディング・ルールを考えたところ、クラス名の最後を Class にするというルールを開発しました。

これなら、Python のコードも COOL のコードも理解が早まりますし、昔から言われていて現在でも絶対的な法則である、「プログラミング=アルゴリズム(処理)+データ構造」を明示することができます。 COOL では処理を動詞、データ構造を名詞とすることで、処理とデータの違いを明示していますが、Class を付けるルールを採用することで、英語が苦手な人でも明確になることでしょう。 それに、現代のプログラミングに必須な割に抽象的で理解が難しい「クラス」に触れていると意識することが多くなるため、クラスの理解が早まるでしょう。 そもそも、C言語の関数に()を付けることで、処理とデータの違いが明示されていたのですが、いつのまにか崩れていたのです。

ということで、Python, 次期 COOL(名前は某 COOL 5か?)を使った clib など、クラス名の最後を Class にするようになりました。

ちなみに、今年公開した bashlib (bash 用ライブラリ) では、このコーディング・ルールが、すでに使われています。

sage_p at 06:24│Comments(0)TrackBack(0)プログラミング 

トラックバックURL

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔