問題タブ [class-design]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 基本クラスから派生クラスにキャストするよりも優れた方法
このようなダウンキャストが機能しないことはわかっています。うまくいく方法が必要です。ここに私の問題があります: 基本クラスから派生したいくつかの異なるクラスがあります。私の最初の試みは、基本クラスの配列を作成することでした。プログラムは、異なる派生クラスを (多かれ少なかれランダムに) 選択する必要があります。基本クラスから派生クラスにキャストして、基本の配列に入れようとしましたが、明らかにうまくいきませんでした。かなりの数の派生クラスが存在する可能性があるため、すべての派生クラスの配列を単に貼り付ける以外の方法を心から望んでいました。私が頭を悩ませているだけで、これを行うためのより良い方法はありますか?
コード例や詳細情報が必要な場合は、お知らせください。それはすべて私には理にかなっていますが、それは遅く、他の人には意味がないかもしれません.
皆さん、どんな助けも大歓迎です。
javascript - Javascript: クラスの関数内の関数からクラス属性にアクセスする方法
クラスの特定の関数内setInterval
で、コードの実行を分割するために使用する必要があります。ただし、setInterval
関数内では、「this」はクラス「myObject」を参照しなくなりました。setInterval
関数内から変数「name」にアクセスするにはどうすればよいですか?
api - コレクションに「デフォルト」アイテムを実装するための最適な設計
私の例では、任意の数の関連付けられた Addresses が関連付けられた Person クラスがあります。そのため、Person クラスのメンバーとして Addresses コレクションが存在します。
Person クラスを使用する多くのアプリケーションでは、「デフォルト」の Address オブジェクトを取得したいだけです。実装に関していくつかの設計上の問題があります。
- DB の各 Address レコードで、コレクションのデフォルトかどうかを設定するフラグを設定できます。別の方法として、さまざまな種類の住所 (自宅、請求先、配送先など) を設定し、個人が自宅の住所レコードを持っている場合はそれをデフォルトとして使用するというルールを設定することもできます。そうでない場合は、配送などを使用してください...
デフォルトのアドレスを取得するために使用されるインターフェースに関しては、それを行う方法はたくさんあります。私は、SO 関係者の何人かが最もよく感じる方法を知りたいと思います。
/li>
「アプリケーションによって異なります」と言うのは、おそらく良いアドバイスです。すべての新しい開発のためにいくつかの基本的なクラスを構築していると言って、それを先取りしましょう。そのため、私たちが構築しているこの最初のアプリを、クラス設計の最終的な言葉と見なすことは必ずしもできません。
design-patterns - インターフェイスをいつ作成するかを知るにはどうすればよいですか?
私は開発学習の段階で、インターフェースについてもっと学ばなければならないと感じています。
私はそれらについてよく読んでいますが、理解できないようです。
「Walk」、「Run」、「GetLegs」などの IAnimal インターフェイスを備えた Animal 基本クラスのような例を読んだことがありますが、何かに取り組んだことがなく、「インターフェイスを使用する必要がある」と感じました。ここ!"
私は何が欠けていますか?なぜ私が理解するのが難しい概念なのでしょうか。私は、具体的な必要性に気付かないかもしれないという事実に怯えています-主にそれらを理解するためのいくつかの側面が欠けているためです! 開発者であるという点で、何かが欠けているように感じます! 誰かがこのような経験をして突破口を開いた場合、この概念を理解する方法についてのヒントをいただければ幸いです. ありがとうございました。
model-view-controller - パックマン ゲーム クラスの設計
私は大学の課題のために Java でマルチプレイヤー パックマン ゲームを作成する必要があります。
だから私はMVCスタイルを下ろそうとしています.これは私がスケッチしたものです.
私は MVC を使用して何かを設計したことがないので、私の知識は実際にはプラグマティック プログラマーと短い講義から得たものに過ぎないため、誤解したり、少し誤解したりする可能性は十分にあります。
また、単純なゲームを設計するために私が見たほとんどのチュートリアルでは、MVC についてまったく言及されていません。これは、MVC を使用するのに適したパターンではないということでしょうか?
これまでの私の考えでは、Game Stateクラスはいわばデータ ストレージの主要なソースであり、2 次元配列を使用してゲームの状態、ゴーストがどこにいるのか、pacman がどこにあるのかなどを保存するというものです。
Gameクラスは、メインのゲーム ループを含み、データ (ゲームの状態) とビュー (おそらく GUI 表現 - 実際に例としてテキスト ベースを追加しただけ) の間のすべての相互作用を制御するメイン コントローラークラスになります。
ゲームが動作するようになったら、クライアント/サーバーに分割する必要があります。このモデルを使用することで、ほとんどのデータと処理をサーバーに保持し、クライアントにコントローラーと対話させて独自のビューを描画させることはそれほど難しくないように思えます。これがネットワーク上でのゲームのパフォーマンスにどのように影響するかは (まだ) わからないので、シングル プレイヤー バージョンが完成したら、さらに調査する必要があります。
これまでの私の設計に基づいたヒントやアドバイスをいただければ幸いです。また、最終的にはマルチプレイヤー ゲームになる必要があることも念頭に置いてください。
乾杯、
アダム
javascript - javascriptクラスにコールバック関数を追加するには?
JavaScript で次のコードを実行すると、「this.callback は関数ではありません」というエラーが表示されます
open メソッドがコールバック パラメータを関数として扱わないのはなぜですか?
もしそうなら、なぜ私は onstatechange 関数でそれを呼び出せないのですか?
どうすればこれを機能させることができますか?
c# - C# で、クラス内のメンバー プロパティを参照する一般的に受け入れられている方法は何ですか?
MSDN の命名ガイドラインを読みましたが、一般的にアンダースコアを避けるようにする必要があることを除いて、明確な答えが見つかりませんでした。私が次のものを持っているとしましょう:
上記の m_name の適切な命名規則は何ですか? たとえば、私が継承するコードでは、一般的に次のように表示されます。
- m_name
- _名前
- 名前
- myName またはその他のランダムな識別子
最も一般的に受け入れられているのはどれですか?
フォローアップとして、クラスのメソッドで、内部 (プライベート) 識別子またはパブリック プロパティ アクセサーを参照しますか?
java - 静的メソッドとインスタンス メソッドをいつコーディングするかについての経験則はありますか?
私は Java (および OOP) を学んでおり、現在の状況とは無関係かもしれませんが、SO が一般的な落とし穴や優れた設計プラクティスを共有できるかどうか疑問に思っていました。
java - UML クラス図のリソース
クラス図を作成するスキルを磨くための良いリソースはありますか? 理想的には UML 2.0 の強力なチュートリアルがあればいいのですが、検索結果がよくないようです。
また、現在、最終年度の試験に向けて修正を行っており、模範的な回答を含む練習問題を実際に試してみたいと思っています。高低を検索しましたが、うまくいきませんでした。 ?
基本的に、私のリビジョンを進めるのに役立つリソース。より高度なものを見て、境界を押し広げる機会を楽しみたいと思います.
どんな助けでも感謝します。
ありがとう、リッキー
class-design - クラスにはいくつのコンストラクターが必要ですか?
現在、9 つの異なるコンストラクターを持つクラスを変更しています。全体として、このクラスの設計は非常に不十分だと思います...クラスが非常に多くのコンストラクタを持つのは設計が悪いのではないかと思います。
最近、クラス (以下のコードの SomeManager) をリファクタリングして再設計しようとして、このクラスに 2 つのコンストラクターを追加したため、問題が発生しました。これにより、単体テストが可能になり、すべてのメソッドが静的であることに依存しなくなります。ただし、他のコンストラクターは、クラスの先頭から約 100 行下に隠れていたため、コンストラクターを追加したときにそれらを見つけることができませんでした。
現在起こっていることは、これらの他のコンストラクターを呼び出すコードは、以前は静的であったため、既にインスタンス化されている SomeManager クラスに依存しているということです....結果は null 参照例外です。
だから私の質問は、どうすればこの問題を解決できますか? コンストラクターの数を減らそうとすることによって?既存のすべてのコンストラクターに ISomeManager パラメーターを持たせることによって?
確かに、クラスに 9 つのコンストラクターは必要ありません。...さらに、このファイルには 6000 行のコードがあります。
上記で話しているコンストラクターの検閲された表現を次に示します。
アップデート:
皆様の回答に感謝します...彼らは素晴らしいものでした!
私がやったことの最新情報を提供したいと思っただけです。
null 参照例外の問題に対処するために、ISomeManager を受け取るように追加のコンストラクターを変更しました。
現時点では、この特定のクラスのリファクタリングが許可されるかどうかについて、私の手は結ばれているため、時間があるときに再設計するクラスの todo リストにフラグを立てます。現時点では、SomeManager クラスをリファクタリングできたことをうれしく思います...この MyManager クラスと同じくらい巨大で恐ろしいものでした。
MyManager を再設計するときは、機能を 2 つまたは 3 つの異なるクラスに抽出する方法を探します... または、SRP を確実に遵守するために必要な数のクラスにします。
最終的に、特定のクラスに最大数のコンストラクターがあるという結論には達していませんが、この特定のインスタンスでは、それぞれ 2 つまたは 3 つのコンストラクターを持つ 2 つまたは 3 つのクラスを作成できると思います。