タイトルからネタまで一通りパク…もとい、いんすぱあ、でお送りいたしますw
いやまぁえぴさん( επιστημηさん )含むメンバーとの話の中で出ていて「面白いなぁ」とおもったので、ちと書いておこうかと思いまして。
アクセサ(setterとgetter)を、使わないって選択肢は物理法則的にありえないとして。
じゃぁ「どう実装するのか」について、結構なバリエーションがありまして…ってのに、話題に上るまで気づきませんでした orz
早速……………覚えているかぎり(苦笑
なお例題は、面倒なんで「値はint型」「age(年齢)っていうモノを扱う」「おおむねC++っぽい記述準拠」とします。
…って詳細書こうと思ったらすでにえぴさんのところに書いてあるの忘れてた(笑
http://blogs.wankuma.com/episteme/archive/2007/12/19/113679.aspx
一応、引用しまふ。
class Person { private: int age_; public: // [壱式] int getAge() const { return age_; } void setAge(int value) { age_ = value; } // [弐式] int Age() const { return age_; } void Age(int value) { age_ = value; } // [参式] int Age() const { return age_; } void setAge(int value) { age_ = value; } // [四式] int Age() const { return age_; } int& Age() { return age_; } };
ちなみに。get_ageは古いC流儀、getAgeだとJava、GetAgeだとC#流儀だそうです。C#流儀は今日初めて知りました。
おいら的には普段は壱式。でも、参式の「setは特に意識して欲しいからsetと書いてもらう」という、ある意味懐かしいC流儀的考え方にも、結構同意出来るモノはありました。
弐式はそもPHPじゃ不可能(苦笑)*1。C++だとしても…ちょっと怖いかも。四式は…うん発想としては面白うなぁと。ただ、C++でちゃんとconst使えないとドパニックしそうですが(苦笑
上述にはそれぞれに長短あって、優劣を論じるのはきわめて難しいと思うのですが。いろいろな思想っつか哲学があって、そういう話が出来るのは大変に刺激的です。
こーゆー話が出来る環境というのは、技術者にとって得難い宝だなぁといつも思います。
*1:かなり無理すると多分できますが、そこまでしてまで…