私はObjective Cコーディングに比較的慣れていないので、これを手伝ってください:
私のコードには、シングルトンである GameData という名前のクラスがあり、いくつかのメソッドが含まれており、スコアリング システムを管理するのはこのクラスです。私の質問は、GameData に保存するスコア用に別のクラスを作成する必要があるか、それともこの方法を維持する必要があるかということです。スコア管理の方法がたくさんあるので確実にしたい!ありがとう!!
私はObjective Cコーディングに比較的慣れていないので、これを手伝ってください:
私のコードには、シングルトンである GameData という名前のクラスがあり、いくつかのメソッドが含まれており、スコアリング システムを管理するのはこのクラスです。私の質問は、GameData に保存するスコア用に別のクラスを作成する必要があるか、それともこの方法を維持する必要があるかということです。スコア管理の方法がたくさんあるので確実にしたい!ありがとう!!
責任の分離 (pdf)は、優れたソフトウェア設計の原則です。必要に応じて、またコードで予想される変更ベクトルに応じて、コードを専用のスコア保持クラスに移動すると役立ちます。
また、 SOLID の原則など、他の重要なオブジェクト指向設計の原則も必ず確認してください。
一般に、A に含まれる特定の値または特定の値のセットを処理するために、オブジェクト A に多数のメソッドを作成していることが判明した場合、その値または値は、すべての B 値関連メソッドを使用してクラス B に構成する必要があります。
この問題に気付いているので、おそらくScore
データに関連付けられた値とメソッドを別のオブジェクトに移動する必要があります。
移動するメソッドについて、そのメソッドが管理者が知っておくべきことScore
なのか、GameData
管理者が知っておくべきことなのかを自問してください。
たとえば、 はScore
おそらく他のスコアの存在を認識すべきではありませんGameData
。これらのスコアの構成を管理するのは の責任だからです。逆に、GameData
管理者は何らかの内部Score
メトリック ( や などpointsGained
)に基づいてスコアを手動で並べ替えるべきではなく、代わりに、 にとって意味のある他のオブジェクトとの比較方法の実装secondsToFinish
に依存する必要があります。この例では、オブジェクトにとって重要な情報のみをオブジェクトに与えることで、クラスを変更することなく、他のスコアへのランク付けを簡単に変更できます。Score
Score
Score
GameData