著作一覧 |
って属性(アトリビュート)と何が違うんだろう?
いつ頃か忘れたけど、ruby-listでまつもとさんが、「プロパティってなんですか?」みたいなことを書いていたことがあったが(Rubyではアトリビュート。なぜならModule#attr_* とattrと前置してるし)、でもVBやCOMではプロパティと呼ぶ。たとえば、IDLではメソッドの属性としてpropputとか書くし。そのメソッドはC++の記述ではset_xxxxになるが(正確には好きな名前で書けると思ったが命名規約だと思う)、VBからはプロパティとして呼ぶ。JScriptからも同じだったかな。Win32OLEからもそうだ(def xxxx=と宣言されたかのように振舞う)。
結局のところ、同じ概念に異なる呼び名がついてるってだけのことじゃなかろうか。
でもマイクロソフトの言葉の利用の仕方には比較的一貫性があるような気がする。IDLでのメソッドの属性という書き方を上ではしたが、.NETでも属性はいっぱい出てくる。.NETでは属性はメタデータで、プロパティはオブジェクト(インスタンス)の文字通りの性格(個々のインスタンス毎に異なるパラメータということかな?)だ。思い出したが、XMLのスキーマの決め方教室みたいなのが以前あったけど、そこでも属性はメタデータ、エレメントは内容というのを方針にしてたという覚えもある。
というわけで、.NETというかCTS上のオブジェクトが保持する情報へアクセスするためのインターフェイスにはプロパティを利用するということになっている。こういうのは規約だから、規約は守っておいたほうが通常は良いことのほうが多いはずだ。ちなみに、C#やVBと異なりマネージドC++から呼ぶ場合は、プロパティであっても実際にコンパイラが生成するメソッド名のget_xxxxと書かなければだめだったと思う。
ちなみに、GUIコンポーネントで、GUIエディターのプロパティエディターから設定可能なものはプロパティとして記述しなければならなかったと記憶している(忘れちゃった)。
なんかあやふやだ。
ジェズイットを見習え |