複数のインスタンス変数を持つクラスがあります。クラスで2つの目的を達成したい。1つの目的で一部の変数のみを使用し、場合によっては両方を使用する可能性があります。
より具体的な例を次に示します。ユーザーが画面をタップするたびに、犬のスプライトと猫のスプライトがアニメーションで表示されるクラスを作成したいと思います。もう一度タップすると、別のアニメーションを実行し続けます。ただし、犬のスプライトのみを表示して更新したい場合があります。また、まれに、犬のスプライトが表示された後、数回タップした後に猫のスプライトが表示されるようにしたい場合もあります。
問題は、インスタンス変数が割り当てすぎるメモリが多すぎるかどうかです。私はメモリを大量に消費するゲームを作ることを計画しているので、パフォーマンスに非常に関心があります。実際にすべてのインスタンス変数をいつ使用するかを予測するのは難しいので、それらを2つのクラスに分割する必要がありますか?より良いアイデアを得るために、考えられるシナリオを分割してみましょう。
Dog Spriteのみが使用され、cat spriteは表示されません。1つのクラスに残された場合、catのインスタンス変数は変更されません。
犬のスプライトが最初に表示され、次に猫のスプライトが後で表示されます。両方のスプライトが最終的に表示されます。2つのクラスに分けることは可能ですが、タッチアドバンスロジックやアニメーションなどのメソッドが類似しているため、一部のメソッドが重複しています。しかし、1回のクラスのままにしておくと、シナリオ1が発生する可能性があります。これは、多くの重複コードを再現しなくても解決できる可能性があります。
他のことが起こる可能性がありますが、問題はすでに上で説明されています。これらは私の観点からの賛否両論です:
ワンクラスアプローチ
- プロ
- 重複するロジックを避ける
同様のインスタンス変数につながる複数のヘッダーをインポートする必要はありません
コン
- おそらく、インスタンス変数の半分を未使用のままにしておきます(NSString、CCSprite、多くの整数と浮動小数点数、CCAnimation、CCLabelBMFontを含む)
2クラスアプローチ
- プロ
- インスタンス変数が少ない
将来、不要な変数を継承せずにクラスから継承する可能性があります
コン
- 一部のロジックが再現されています
どのオプションを使うべきか決めるのは難しいです。どんな提案も素晴らしいでしょう!前もって感謝します!
if (didHelp)
for (int x = 0; x < 100; x++)
NSLog(@"Thanks!");