ページ 11

クラスのメソッドを複数のソースファイルに分けて定義することについて

Posted: 2012年9月04日(火) 21:17
by 山崎
 こんばんは。山崎と申します。
 この度は、「あるクラスのメソッドを、それぞれ別のソースファイルで定義することの是非」について皆様の意見を頂戴したく参りました。

 ただ今、C++でゲームの「自分の好きなスキルを選んで装備、登録する」というタスクを作っております。
 非同期読み込みを用いて「NowLoading...」画面を演出できるようにしているのですが、非同期読み込みの完了待ちのコードが不本意にも大きくなってしまい、ソースファイルのコードを追いにくくなってしまいました。
 そこで、「このゲームタスクのクラスの非同期読み込み中の処理と、読み込み完了後の処理を別々のファイルに記述したらいいのではないか」と考えました。しかし今まで「ヘッダファイルとソースファイルは1対1」を基本としてきたので、果たしてこの方法はいかがなものなのか?スタンダードから逸脱しているのか?と不安になった次第です。

 以下はその例のコードです。

コード:

//----------------------Sample.h----------------------

class CSampleGameTask
{
	void SampleMethod1( void );
	void SampleMethod2( void );
};

//----------------------Sample1.cpp----------------------

#include "Sample.h"

void CSampleGameTask::SampleMethod1( void )
{
	// 何らかの大きな行数にわたる処理
}

//----------------------Sample2.cpp----------------------

#include "Sample.h"

void CSampleGameTask::SampleMethod2( void )
{
	// 何らかの大きな行数にわたる処理
}
 上のコードのように「あるクラスのメソッドを複数のソースファイルに分けて定義する」ことについて、皆様がどうお考えになっているか聞かせて頂きたく思います。
 例えば
・全く問題無い。スタンダードから逸脱もしていない。
・動作に問題はないが、お勧めはしない。
・動作に支障が出る可能性があるので、この方法をとらないことを強くお勧めする。
・何らかの設計思想の観点から、この方法はとるべきではない。
・そもそもこうなる設計がおかしい。この方法の如何は置いといて、まず設計を見直せ。
などなど、賛否とその理由をお聞かせくださると幸いです。

Re: クラスのメソッドを複数のソースファイルに分けて定義することについて

Posted: 2012年9月04日(火) 21:29
by softya(ソフト屋)
継承その他で何とか成ると思うので見なおしたほうが良いと思います。
クラスが大きくなって見渡しづらいのはろくな事にならないからです。
なんなら、読み込み待ちを管理するだけのクラスを作っても良いかと思います。

あと「非同期読み込みの完了待ちのコード」と言うのが大きのもアルゴリズム的な問題があるかも知れません。

Re: クラスのメソッドを複数のソースファイルに分けて定義することについて

Posted: 2012年9月04日(火) 22:24
by 山崎
softyaさん
ご回答誠にありがとうございます。
やはりコードが長すぎるのは頂けない状況ですよね・・・。
読み込み待ちだけを行うクラスも考えてはいたのですが、本格的に導入することも視野に入れていきたいと思います。
一旦、設計の見直しをじっくりしてみたいと思います。