アクセサ論争
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/29 19:11 UTC 版)
「メソッド (計算機科学)」の記事における「アクセサ論争」の解説
SmalltalkやObjective-Cのようなメッセージ送信メタファーの言語では、外部からのインスタンス変数(フィールド)へのアクセス時には必ずアクセサを用いるというのが常識である。一方 C++ などでは public 変数への直接アクセスが往々にして利用されることがある。 効率の問題。メソッドをいちいち呼び出すコストを避けたい場合。ただしほとんどはコンパイラ最適化によるインライン化で解決できる。 記述量の問題。単純に値を設定/取得するだけのことに全てメソッドを記述するのは間違っているという考え方。 問題となるのは後者である。 まずカプセル化や多態性の観点から、アクセサを用いない変数参照は将来にわたっての変更耐久性や拡張性が著しく劣る。また記法の一貫性からアクセサを指示する向きもある。一方否定派は「強力な IDE を用いればリファクタリングは可能であり、むしろフィールドへの直接アクセスを用いる方が意味が明確となる」という主張を展開し、時にフレームに発展する場合がある。これは現代の「goto文論争」ともいうべき、半ば宗教的な対立関係である。 そのほか、C++ではC言語との相互運用時に構造体を用いることがあるが、構造体のメンバー変数は隠蔽しないことが多い。C++におけるclassキーワードとstructキーワードは、デフォルトのアクセシビリティが異なるという違いしかないが、メンバー変数を隠蔽しないC言語互換の構造体として利用するPOD (Plain Old Data) 型を定義する際に、classキーワードではなくstructキーワードが使われることもある。 C# はこの反省から、アクセサ定義を簡素化する要素としてプロパティを導入した。また Ruby など、アクセサを簡単に定義できるメソッドや構文を備えている言語もある。
※この「アクセサ論争」の解説は、「メソッド (計算機科学)」の解説の一部です。
「アクセサ論争」を含む「メソッド (計算機科学)」の記事については、「メソッド (計算機科学)」の概要を参照ください。
- アクセサ論争のページへのリンク