問題タブ [class-structure]
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.
php - PHP クラス階層を整理する最良の方法
私はほとんどのプロジェクトで使用してきたやや原始的なフレームワークを持っていますが、まだ解決できていない一般的な設計上の問題が頭に浮かびました。特定のアプリケーションについて、アプリケーション固有のクラス構造をフレームワークの構造から分離する必要がありますか、それともフレームワークの上に構築することはそれほど悪いことではありませんか?
たとえば、ベースの Controller クラスを持つフレームワークがあり、それをアプリケーションの特定の部分に拡張したとします。最も理にかなっている配置はどれですか?その理由は?
クラス構造 A:
- 直感的で、デバッグ時にソース ファイルを簡単に見つけることができます。
- ファイルの命名/ディレクトリ構造は、クラス階層を反映しています。
クラス構造 B:
- フレームワークのモジュールを維持し、簡単に交換/更新できます。
- ディレクトリ構造がいくらか複雑になり、ディレクトリ/ファイルの命名が常にクラス階層に従わなくなりました。
全体的には個人的な好みに帰着することはわかっていますが、どの方法を選択するかを決定する前に、すべての長所と短所を比較検討したいと思います. 実際の階層はどちらの場合も同じままであるため、実際にはクラスの命名とディレクトリ構造に帰着します。
c# - .NET ネストされたクラス
私が取り組んでいる現在のクラス ライブラリには、「フィールド」から継承され、読みやすさを維持するためにネストされる 50 を超える特定の「フィールド」タイプを持つ基本クラス (フィールド) があります。例えば...
これまでのところ、すべて問題ないように見え、次のようにコードを使用できます。
しかし、なぜこれも同様に機能するのでしょうか? コンパイラ/IDE インテリセンスがこれらの「FieldA」を連鎖し続けることを可能にするために、ここで何が起こっているのでしょうか?
決してアプリケーションを壊すわけではありませんが、それは独特だと思いました。Boo (ライブラリに使用されている実際の言語) でも同じことを行います。
c# - C#:アセンブリ内のすべてのクラスを一覧表示
アセンブリ内のすべてのクラスのリストを(プログラムで-C#で)出力したいと思います。
これを行うためのヒントやサンプルコードはありますか?反射?
class - UML クラス図の if 条件?
「属性」が true の場合、この「操作」を行います。それ以外の場合は何もしません。
これを UML クラス図に表示するにはどうすればよいですか。
ありがとう、キム
python - object() インスタンスの宣言されていない属性には代入できないのに、カスタム クラスでは代入できるのはなぜですか?
基本的に、これが機能する理由を知りたい:
しかし、これは AttributeError を返します:
未定義の属性を使用できるクラスと使用できないクラスをどのように判断できますか?
ありがとう。
php - クラス内の変数/定数を使用した動的な値の割り当て
クラス構造内の変数に動的な値を設定できないことを常に認識していますが、これを回避する方法はありますか?
私はこのインターフェースを持っています:
このコード内で、セクション1および2としてマークされた行がエラーをトリガーします。より具体的には、エラーは以下のとおりです。
ただし、これはインターフェイスであるため、メソッドはありません。コードブロックは許可されていません。
誰かが解決策を提供できますか?
java - Javaでオブジェクトを重複せずにクラスAを介してクラスBからクラスCに渡すにはどうすればよいですか。
3つのクラスがあるとしましょう。
- クラスA(アクティビティを拡張)
クラスB
クラスC(ビューを拡張)
Aは、を保持するBオブジェクトを作成しますBitmap
。AはCも無効にします。CはそのにonDraw
aを描画します。Bitmap
Canvas
Cで別のオブジェクトBitmap
を作成せずに、Bが保持するを描画するにはどうすればよいですか?Bitmap
同じ「クラス構造」を維持することが重要であることに注意してください。
これが擬似コードです。Bitmap
これにより、2つのオブジェクトがメモリに配置されることがわかります。ありがとう!
language-agnostic - クラス アーキテクチャの質問
このかなり単純な問題に関するいくつかの意見の直後。
たとえば、Excel スプレッドシートから大量のデータを抽出する DocumentParser クラスがあるとします。キャプチャされたデータは、「DataObject」などの別のオブジェクトでモデル化されます。ドキュメント パーサーは、これらのオブジェクトのコレクションを構築し、広範なデータセットに転送して、さらにタスクを実行できるようにします。
私の質問は、ドキュメント パーサーと同じクラスでデータセットの母集団を実装しますか、それとも単一責任の原則を順守して、それを新しいクラスにしますか? それが別のクラスである場合、データ オブジェクトのコレクションをそのクラスにどのように公開しますか?単にパラメーターとして渡しますか?
ありがとう。
c# - NHibernate と異なる実装のインターフェース
私は最近 C# と NHibernate を使い始めたので、これはすべて初心者です。
私が構築しているアプリケーションでは、英国の郵便番号間の距離を計算する必要があります。アプローチの 1 つは、グリッド参照とピタゴラス距離を使用することです。もう 1 つの方法は、Google マップを使用して距離を取得することです。
Ipostcode
メソッドとのインターフェースがgetDistance(IPostcode p)
あり、実装に応じて、クラスはさまざまなテーブルと通信します。
グリッド参照には、GridRefPostcode オブジェクトと DB テーブル ((string)postcode、(long)northing、(long)easting) を用意します。
Google マップの場合、GoogleMapsPostcode オブジェクトと DB テーブル: (string)postcode、(string)otherPostcode、(double)distance を使用します。
クラス Person にはフィールドがあり、両方のクラスから提供されたIPostcode
距離に基づいて距離を計算します。getDistance()
問題は次のとおりです:NHibernateでこのクラス関係をどのようにマッピングするのですか? インターフェイスをマッピングに適合させるにはどうすればよいですか?
それは可能ですか?クラス構造を完全に変更する必要があるという直感がありますが、これが最も合理的な解決策のようです。Google が提供する 2 つの郵便番号の間に距離がある場合はそれを使用し、利用できない場合は降格します。 GridReferences。
どんなアイデアでも大歓迎です!
c# - C#コードをリファクタリングして、保守性を高め、コーディングのベストプラクティスを使用できるようにします。
私はこのC#クラス構造を持っており、最高のコーディング標準を使用するようにリファクタリングしたいと思います(インターフェイス/抽象クラスを使用)。これにより、保守と再利用が容易になります。現在のコードはひどいものではありませんが、理想的ではありません。
一連のTableItemGroupクラスがあります:AccountTableItemGroup、PendingVoteTableItemGroup、およびRequestingVoteTableItemGroup。各TableItemGrupには、文字列SectionNameと、対応するTableItemのリストが含まれています...
将来的にはさらに多くのTableItemGroupがあり、List部分を除いてすべて同じである場合、コードをコピーして毎回新しいグループを作成し、その小さな変更を加える必要はありません。もっと良い方法があるに違いないことを私は知っています。List <>ジェネリックを使い続けたいので、後で何もキャストする必要はありません。
他の部分はTableItemsです。AccountTableItem、PendingVoteTableItem、およびRequestingVoteTableItemがあります。TableItemsは互いに異なりますが、それぞれ3つの共通の文字列(TitleLabel、DetailLabel、およびImageName)を共有します。ただし、その後、各TableItemには、追加のプロパティまたはメソッドが含まれる場合と含まれない場合があります。
それで、皆さんへの私の質問は、コードの可能な限り多くの再利用を可能にし、最高のコーディング標準を使用するために、クラス構造を再定義するにはどうすればよいですか?
抽象TableItemクラスを作成することを考えていましたか、それともTableItemGroupのインターフェイスを使用することを考えていましたか?インターフェイスまたは抽象クラスを使用することがコーディング標準に最適であることは知っていますが、それによってコードの量がどのように削減されるかわかりません。
助けてくれてありがとう。