Objective-C の名前空間について

Objective-C には名前空間がありません。そのことについて、不満を述べるプログラマが少なからず居るようですが、私はそんなことは思いません。なぜなら、名前空間は便利こそあれど、本質的にプログラミングに関係することではないと思っているからです。

Objective-C のランタイムシステムや Cocoa フレームワークの名前は、衝突を防ぐために古典的な方法がとられているのは、すぐにわかると思います。それは、名前の前に接頭辞を付けることです。たとえば、NSObject であったら、NS の部分がそれにあたります。

もし名前空間の機能があれば、おそらくファイルの先頭で名前空間の使用を宣言すれば、それ以降に接頭辞を付けることなくクラス名を書くことができるでしょう。これによって、記述が少なくなり、打つ手間も省けるでしょう。ただし、Objective-C の命名規則では、先頭の二文字が省略できるにすぎませんが。要するに、名前空間があったとしても、それほど便利になるとは思えないというところです。Objective-C は、Cから比較的簡素な拡張のされ方をしている言語なので、極力言語に機能を追加しないほうがいいと、私は考えています。

そうは言うものの、無いものは不便と感じる方も居ますので、気休め程度に名前空間が無いメリットを紹介します。

それは、クラス名がユニークなので、とても検索しやすいことです。クラス名が String であったら、検索したときにほかの言語の情報が出てくるかもしれませんが、 NSString ならば、簡単に NSString の情報を探し出すことができます。ついでに言うと、Objective-C の長いメソッド名も、打つのは大変であれど、検索しやすくていいところもあります。逆に検索結果が少なすぎて絶望することもありますが。

このように、名前空間が無いからこそのメリットもありますので、そんなに悲観すべきことではないと思います。

コメント投稿