次のコードサンプルでは、プロセスが異なるコンテキストに割り当てられています。各Appオブジェクトは1つのコンテキストにのみバインドされます。すべてのプロセスが同じコードを実行しますが、コンテキストに属するものだけがAppのメソッドを実行します。この目標を実装するために、コードに示すように、私はif
制御ステートメントをAppクラスのすべてのメソッドに追加する必要があります。だから私の質問:いくつかのエレガントな方法で同じ作業を行うのですか?冗長性を避けるため、次のコードをどのように再設計しますか?
class Context {
public:
bool ContainsCurrentProcess();
...
private:
std::vector<int> procs_;
...
};
bool Context::ContainsCurrentProcess() {
if (current_process_id belongs to procs_)
return true;
else
return false;
}
class App {
public:
App(Context *ctx, ...) {}
void Method1();
void Method2();
void Method3();
...
private:
Context *ctx_;
...
};
void App::Method1() {
if (ctx_->ContainsCurrentProcess()) {
...
}
}
void App::Method2() {
if (ctx_->ContainsCurrentProcess()) {
...
}
}
void App::Method3() {
if (ctx_->ContainsCurrentProcess()) {
...
}
}
https://codereview.stackexchange.com/helpに適しているかもしれません。私はヘルプページにリンクしていますので、セクションを読んで自分の考えをどうやって作るのかを教えてください。 – user4581301
私はソフトウェアエンジニアリングコミュニティ(https://softwareengineering.stackexchange.com/questions/360179/how-to-the-refactor-the-following-parallel)に転記したので、この質問をトピックとしてクローズすることにしました。 -code-to-avoid-redundant-checking)を使用します。私はそれがより適していると思う。 –