コーディング規約 第3条
■ このスレッドは過去ログ倉庫に格納されています
0567512=521=541=549
2010/03/13(土) 21:00:37漏れが言いたいのは、まず↓は明らかに無駄だって事。
class Data {
public: void SaveToFile() {
open();
write();
close();
};
private:
void open(){ m_pFile->open(); } //←こーいうのが
void write(){ m_pFile->write(); } //←無駄だと
void close(){ m_pFile->close(); } //←言いたい
File* m_pFile;
};
だけど、↓は辛うじて許容されると思う。(設計の良し悪しは別として)
void opendata(){ m_pFile->open( m_datafile_path ); }
両者の違いは何か?と言う理由を考えたとき、一番単純明快な理由が
前者はオブジェクト指向的に間違ってるという事。
open/write/closeは明らかにFileに対する操作であって、
Dataに対する操作ではない。Dataだけが行う操作でもないし、
DataはFileの別称または総称でもない。
一方、後者はDataだけが行う操作。主体はデータファイルだから
原則を徹底するなら別クラスとして切り離すべきだけど、
その場合クラスの粒度が細かくなりすぎる。
一言でまとめるなら、「無駄なたらい回し」は何を持って無駄か?ってのは、
オブジェクト指向的にどこまでが妥当か?で判断すりゃ良いんじゃないかと
言いたかった。
■ このスレッドは過去ログ倉庫に格納されています