Entry

プログラミングメモ - クラス名のつけ方で接頭辞とか

2010年02月22日

うちの職場の規約でもそうなんですけれど,クラスライブラリを作るときに,「クラス名に接頭辞(prefix)を付けること」というもんがあります。うちの職場だけでなく,ネット上で見つけられる有名なコーディング規約でも,「付けること」としているものが割とある。これ,どういう意味があるんだろう。

クラスライブラリの接頭辞というのは,クラスライブラリ間で共通する文字列をクラス名の頭につけるということです。例えば,Qt という GUI ライブラリの場合,必ず接頭辞に"Q"が付きます。"QApplication"とか"QDialog"といった具合。

しかしこれ,今でも有効な規約なんだろうか。どゆことかというと,こゆのって,名前空間で切り分けるような話なんでねいの?と思うんだけれども,どうなんだろう。

Qt の例だったら,qt という名前空間に対して,qt::Application とか qt::Dialog とか付けることになります。また名前空間はネストできるので,qt::net::Dns とかいった構造も作れる。こっちの方がカッコイイと思うんだけれども……いや,カッコイイとか言っちゃだめですね,こっちのほうが論理的に命名できると思うんだけれども,接頭辞を使わずに名前空間使っちゃいかん理由はあるのだろうか。

接頭辞を使うのが(あまり)論理的でないと思うのは,クラス名に意味不明の(プログラム外の事情に基づく)文字列を導入する理由がよく分からんということです。ぶっちゃけた話,悪名高きハンガリアン記法よりも根拠がないと思う。勝手につけられるから接頭辞に唯一性もない。Java だとベンダごとにパッケージのソースツリーを URI で指定するお約束になっているわけだけれど,C++ の場合は,いまだにパッケージ名とクラス名がくっついて,クラス名になっている。名前空間はあるものの,あまり使われてない。

処理系側の対応が不十分だってのもあるんでしょうけど,そろそろ,この規約は無くした方がいいんじゃないだろうか。先日,この点について知り合いに話したんですけど,「だって名前空間指定するの面倒ジャン」だって。えー……そういう理由……?

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN