コーディング規約 第3条
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/02/04(日) 23:28:42コーディング規約・スタイルに関するスレ
前スレ
コーディング規約 第2条
http://pc10.2ch.net/test/read.cgi/tech/1068752664/
0951デフォルトの名無しさん
2010/03/22(月) 20:33:17じゃあ逆にsetter/getterを使う事の問題は?パフォーマンス上の理由以外で
0952デフォルトの名無しさん
2010/03/22(月) 20:44:37ビジネスロジックの「心底ウザい条件チェック」と「心底ウザい条件変更の多発」を経験してると、何だってsetter/getter経由にしたくなる
0953デフォルトの名無しさん
2010/03/22(月) 21:15:400954デフォルトの名無しさん
2010/03/22(月) 21:21:360955デフォルトの名無しさん
2010/03/22(月) 21:23:560956デフォルトの名無しさん
2010/03/22(月) 21:38:43と思ったが3年の歴史のあるスレがこの終り方はちょっと可哀想だわwww
0958デフォルトの名無しさん
2010/03/22(月) 21:49:02インデントはタブかスペースかなんてなんか長閑な話題でスタートしてたんだな。
0959デフォルトの名無しさん
2010/03/22(月) 22:34:130960デフォルトの名無しさん
2010/03/22(月) 22:35:36無駄なたらい回し、ってことじゃないの?本人じゃないから真意はわからんけど。
0961デフォルトの名無しさん
2010/03/23(火) 00:04:020962デフォルトの名無しさん
2010/03/23(火) 00:44:030963デフォルトの名無しさん
2010/03/23(火) 00:47:22コードが読みづらくなる。
つか、お前全部アクセッサ経由にしてるのか?
0964デフォルトの名無しさん
2010/03/23(火) 01:17:140965デフォルトの名無しさん
2010/03/23(火) 01:52:19齟齬が生じると思うのだけど。
個人的にはプロパティのある言語(LLやC#)ならともかく、
C++やJava(6.x系まで)では微妙な気がする。
0966デフォルトの名無しさん
2010/03/23(火) 01:57:550967デフォルトの名無しさん
2010/03/23(火) 03:18:430968デフォルトの名無しさん
2010/03/23(火) 04:05:37設計から導かれる setter/getter は 良い setter/getter。
実装から導かれる setter/getter は 悪い setter/getter。
0969デフォルトの名無しさん
2010/03/23(火) 04:07:130970934
2010/03/23(火) 11:21:23俺的にはいいも悪いも評価保留中だけど、それってどうなの的な話題ふり。
この議論は『Smalltalk Best Practice Patterns』が初出らしいんだけど、Smalltalk固有の
何かが関係しているのかどうかは不明。
ただ、俺が読んだ話(何で読んだかは忘れた)では、C++でprivateメンバ変数を
必ずアクセッサ経由で呼ぶという流派があって、その理由の一つは継承先で
getterを遅延評価に変えたりする可能性があるかららしい。
俺としては、そういう流派の人がもしいたら理由を聞きたい的なレベル。
0971934
2010/03/23(火) 11:22:31みたいな規約だったらどう思う?的なこと。
0972デフォルトの名無しさん
2010/03/23(火) 11:24:260973デフォルトの名無しさん
2010/03/23(火) 11:29:530974デフォルトの名無しさん
2010/03/23(火) 11:50:36今時のコンパイラなら空のアクセサを直接アクセスへのコード展開ぐらいしてくれるだろうし。
0975デフォルトの名無しさん
2010/03/23(火) 11:54:160976デフォルトの名無しさん
2010/03/23(火) 12:00:470977デフォルトの名無しさん
2010/03/23(火) 14:19:22> その理由の一つは継承先で
> getterを遅延評価に変えたりする可能性があるかららしい。
サブクラスがスーパークラスの getter に変更を加えるってピンと来ないな
privateメンバの getter でしょ、protectedメンバじゃなくて
0978デフォルトの名無しさん
2010/03/23(火) 14:24:06フツーにオーバーライドでは?
> privateメンバの getter でしょ、protectedメンバじゃなくて
えっ?
0979デフォルトの名無しさん
2010/03/23(火) 14:38:39privateのsetter/getterって誰がアクセスするの?
0980デフォルトの名無しさん
2010/03/23(火) 14:56:47アホを釣り上げて叩こうって意図?
0981デフォルトの名無しさん
2010/03/23(火) 17:56:12そしてクラス内でバッキングストアにアクセスするときもアクセサ使え、
って主張とちゃうの?是非はともかく。
1)
class Person {
public int age; // アクセサなんぞいらんわ
void aging() { age++; }
}
2)
class Person {
private int age;
public int getAge() { return age; }
public void setAge(int age){ this.age = age; }
public aging() { age++; } // private にアクセサ使うとか・・・
}
3)
class Person {
private int age;
public int getAge() { return age; }
public void setAge(int age){ this.age = age; }
public aging() { setAge(getAge() + 1); } // 継承対策っすよ
}
0982934
2010/03/23(火) 18:04:48全てのprivateメンバ変数に対するアクセスもsetter/getterを経由しろってのは、
Personの例でいえばこんな感じ。
class Person {
public:
void setName(const char* name) {
if (ミドルネームが存在したら) {
// isMiddleNameExist = true; こうはせずに
setIsMiddleNameExist(true); // こうしろ
}
}
protected:
virtual void setIsMiddleNameExist(bool b) {
isMiddleNameExist = b;
}
private:
bool isMiddleNameExist;
}
0984デフォルトの名無しさん
2010/03/23(火) 18:24:09クラス内でもフィールドの仕様が安定してないとかで変わるんじゃないの?
virtual 付けてたり、final みたいなオーバーライド禁止付けたりしないんであれば
アクセサ経由じゃないとオーバーライドの内容次第じゃおかしなことになるんじゃない?
0985デフォルトの名無しさん
2010/03/23(火) 20:23:03仕様は仕様の中で暮らしているかの違い
0986デフォルトの名無しさん
2010/03/23(火) 23:59:180987デフォルトの名無しさん
2010/03/24(水) 00:14:32それはもう手間の面でしか判断できん
0988デフォルトの名無しさん
2010/03/24(水) 00:27:40virtual付けないとオーバーライドできないけど?
0989デフォルトの名無しさん
2010/03/24(水) 00:28:26次スレいるのか?
0990デフォルトの名無しさん
2010/03/24(水) 00:38:340991デフォルトの名無しさん
2010/03/24(水) 03:15:580992デフォルトの名無しさん
2010/03/24(水) 07:23:580993デフォルトの名無しさん
2010/03/24(水) 09:21:05だから、「virtual 付けてたり」「finalみたいなオーバライド禁止尽けたりしないん」であれば
オーバーライドの内容次第でおかしくなるだろってこと。
0994デフォルトの名無しさん
2010/03/24(水) 10:03:570995デフォルトの名無しさん
2010/03/24(水) 17:06:21だから、「virtual”付けてたり”」「finalみたいなオーバライド禁止尽けたりしないん」であれば
オーバーライドの内容次第でおかしくなるだろってこと。
0996デフォルトの名無しさん
2010/03/24(水) 17:24:34privateメンバだぞ?
0997デフォルトの名無しさん
2010/03/24(水) 17:31:22>>981>>982 みれ
何ぞこのアホな幕引きは・・・
0998デフォルトの名無しさん
2010/03/24(水) 17:32:30要するに何が言いたいんだろう?
オーバーライドしようがしまいが、アクセッサ経由でしかアクセスできないだろ。
0999デフォルトの名無しさん
2010/03/24(水) 17:33:44privateメンバ変数の話だぞ?>>934見ろ馬鹿。
1000デフォルトの名無しさん
2010/03/24(水) 17:34:5910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。