クラス名・変数名に迷ったら書き込むスレ。Part3
106 :
デフォルトの名無しさん:
ところで値を返す関数の名前は名詞にしたほうがいいと思うが、getってつける人が多いな。
式の途中にget(動詞)があると読んでてキモくない?
じゃあgetsにすればいい
>>106 プロパティは名詞、メソッドは動詞だろ。
そのルールを破られたほうがよっぽどキモい。
>>108 ふーん。そうなのか。
たぶんJavaのルールだと思うんだけど、そのルールの根拠は説明できる?
プロパティは値そのものを返す
メソッドは操作結果を返す
JavaのルールってかUMLのルールだな
プリミティブ操作関係のクラスは普通に名詞も使う
>>109 Javaにプロパティなんて無い。Javaはアホみたいにget/setしてるだろ。
C#やDelphiなんかの文法レベルでプロパティをサポートしている言語共通のルールだ。
>>110 プロパティの実体は値を保持する変数である必要は無い。
何かの操作・計算結果でも構わない。
int Right
{
get{ return Left + Width; }
}
>>112 あー
>>108を誤読してたよ。
普段C++使うんで、勝手に「プロパティ→データメンバ」、「メソッド→メンバ関数」と対応付けて読んでた。
漏れが問いたかったのは、たとえばSTLコンテナのsize()を、
「関数だから動詞」というルールでget_size()としてしまうことの是非。
>>113 厳密に言えばおかしいから多少ウザくてもget付けるべきだけど
プロパティという概念を関数で実装していて
ライブラリ全体に命名規則の一貫性があるならあり。
ただしsetterとの整合性が取れなくなるので相当変。
int size(); void set_size(int value);
かといってこれも変だし。
int size(); void size(int value);
つかスレ違い
オペレータ
void size=(int value);
>>116 可読性や明確さよりも、厳格なルールと、ルールに従うことを重要視するのが、Java流のネーミングだから。
>>116 setterとの整合性って書いてあるだろ。
void set_size(int value);
int get_size();
getを付けないと
void set_size(int value);
int size();
でバランスが悪い
void resize(int value);
int size();
>>117 そんな形骸化したルールなんて従いたくないもんだな。
>>118 なんで set_size が前提になってんの?
size/resize ならいいの?
ついでに、 size/set_size でも悪くないと思う。
>>120 >なんで set_size が前提になってんの?
>size/resize ならいいの?
だからプロパティという概念を軸に発想しろっての
お前はあらゆるプロパティのsetterに適切な動詞が存在するとでも思ってるのか?
color, name, width, object1_ptr, object2_ptr, object3_ptr, ....
>ついでに、 size/set_size でも悪くないと思う。
気にならないのはお前の趣味の問題で
(set/get, 名詞/動詞のルールの)一貫性が損なわれているのは間違いないだろ。
いつまでも馬鹿なこといってないでプロパティのある言語で10万行くらいコード書いてみろ。
つかスレ違い