アクセサ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
アクセサ (accessor) とは、オブジェクト指向プログラミングでオブジェクトの属性やプロパティを取得 (getter)、設定 (setter) するメソッドの対の事。基本的に getXXX,setXXX のように語幹部が揃っているものをいう。
[編集] アクセサ論争
SmalltalkやObjective-Cのようなメッセージ送信メタファーの言語では、インスタンス変数は必ずアクセサを用いて利用するというのが常識である。一方C++やJavaなどではpublic変数への直接フィールドアクセスが往々にして利用される。
- 効率の問題。メソッドをいちいち呼び出すコストを避けたい場合。ただしほとんどはインライン化で解決できる。
- 記述量の問題。単純に値をセット、取得するだけのことに全てメソッドを記述するのは間違っているという考え方。
問題となるのは後者である。
まず多態性の観点から、アクセサを用いない変数参照は将来にわたっての変更耐久性が著しく劣る。また記法の一貫性からアクセサを指示する向きもある。一方否定派は「強力なIDEを用いればリファクタリングは可能であり、むしろフィールドへの直接アクセスを用いる方が意味が明確となる」という主張を展開し、時にフレームに発展する場合がある。これは現代の「goto文論争」ともいうべき、半ば宗教的な対立関係である。
C#はこの反省から、アクセサ定義を簡素化する要素としてプロパティを導入した。またRubyなど、アクセサを簡単に定義できるメソッドや構文を備えている言語もある。