問題タブ [design-principles]
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.
user-interface - ルール エンジンのユーザー インターフェイスの設計
社内には最適化エンジンがあり、これらのエンジンが使用する入力の 1 つはビジネス ルールであり、独自のルール エディターで作成および編集しています。
既存のルール エンジンでは、必要な複雑さのビジネス ルールを表現できなかったため、これらのルールは独自の形式になっています。
いずれにせよ、現在のルール エンジンの動作には多かれ少なかれ満足しています。複雑なビジネス ルールでは非常にうまく機能しますが、ユーザー インターフェイス (ルール エディター)には満足していません。基本的に、これは現在、文字通り、複雑なスプレッドシートのような表形式の GUI を使用して編集される一連のテーブルで構成されています。
これは機能的ですが、開発者ではなく、ビジネス アナリストに相当するエンド ユーザーに提示するにはひどいインターフェイスです。手を汚す前に、この状況に特有のユーザー インターフェイス設計について、StackOverflow コミュニティの意見を聞くのは良い考えだと思いました。
私の質問
- 既存のルール エディターで見た中で最高のユーザー インターフェイスは何ですか?
- ルール エディターのユーザー インターフェイスの設計の背後にある最良の原則は何だと思いますか?
私は、ルール エンジンとルール エディターという用語を別々に使用しています。この質問については、ルール エディターのみに関心があります。
ルール エンジンに対処するが、ルール エディターにもそのユーザー インターフェイス設計にも対処しない、StackOverflow に関するその他の質問:
java - インスタンス化/宣言時にクラスのスーパータイプを指定しますか?
クラスをインスタンス化/宣言するときに、クラスの親を指定することはできますか?たとえば、私はこれに似た何かをすることができますか?
そして、そのステートメントから、MonitoredDeviceクラスはタイプパラメーターDeviceTypeToExtendから拡張されます。さて、タイプパラメータを使用してスーパークラスから拡張することはできないことはわかっていますが、特定の親から「動的に」拡張するというこの目標を達成するために似たようなことを知っている人はいますか。
ありがとう、
スティーブ
language-agnostic - 最も重要な構造化ソフトウェアの設計原則は何ですか?
今日、「C++ でのコーディングの相当な経験と、構造化設計原則の完全な基礎」を必要とする職務記述書を目にしたので、これらの原則とは何かを考えてみました。最初はC++と「構造化設計」を一言で言うとちょっと変だなと思ったのですが、C++はマルチパラダイムプログラミング言語なので、Cと同じように使われているのかなと思いました。ウィキペディアのページも調べて読みました例外処理とステート マシンについては、構造化されていない設計 (当然のことです) ですが、まだ多くのことが不足しているように感じます。では、構造化ソフトウェアの設計で最も重要な原則は何ですか?
oop - Liskov Substitution Principleは、抽象クラスから継承されたサブタイプに適用されますか?
大まかに言えば、Liskov Substitution Principle は、ユーザーに影響を与えることなく、派生クラスを基本クラスの代わりに使用できると述べています。基本クラスが抽象クラスの場合、つまり基本クラスのインスタンスを使用しているユーザーがいない場合、Liskov の継承制限は派生クラスにも適用されますか?
ajax - AJAXはHTTPプロトコルの異常をプッシュしますか?
Web指向のアプリでエレガントなPub-Subアーキテクチャを開発することは、実際の課題です。長いポーリング接続(COMETなど)と反復タイムアウト(js setTimeoutなど)を使用した非常に興味深いソリューションがいくつかありますが。IMHO AJAXプッシュは、無実のHTTPプロトコルを強制する微調整とハッキングのレイヤーのように見えます。
では、AJAXはHTTPプロトコルの異常をプッシュしていると思いますか?
Webアーキテクチャで検討できる他の選択肢はどれですか?
design-patterns - IoC コンテナーを使用するときにインターフェイスの分離を管理する方法は?
私は現在小さなシステムを設計しており、現在構造マップを IoC として使用しています。私は最近、インターフェイスの分離のポイントを得ました...そして今疑問に思っています。
たとえば、3 つのインターフェイスを実装する特定のビジネス オブジェクトがある場合、コードの構成と挿入でこれをどのように処理すればよいでしょうか。
単純なシナリオで、EmployeeServiceObject というサービス層クラス用に 2 つのインターフェイスがあると仮定します。IGenericEntity および IEmployeeServiceObject。
GenericEntity はクラスの CRUD 機能を提供し、IEmployeeServiceObject はビジネス クエリ/操作の結果セットを提供します。
Facade/Service Layer メソッドで、EmployeeServiceObject クラスを使用し、実際に両方のインターフェイスの機能を使用する必要がある場合...これをどのように処理する必要がありますか?
最初は、IoC の構成をセットアップして IEmployeeServiceObject を EmployeeServiceObject にマップし、ファクトリにオブジェクトを要求し、CRUD 機能を使用する必要があるときにそれを IGenericEntity にキャストするのが正しいと思っていましたが、よくわかりません。 . 具象クラスが ioc コンテナー構成でセットアップされていないインターフェースを実際に実装していると正式に述べることは決してないため、それも正しくないようです。
そして、同じ具象クラスの 2 つのインスタンスを作成するが、別のインターフェイスを要求することは確かにわかっています...さらに悪いことに聞こえます。
これはどのように処理する必要がありますか?
oop - リターンタイプの具体的なタイプまたはインターフェイス?
今日、私はオブジェクトプログラミングスタイル、具体的なタイプ、またはインターフェイスの基本的なパラドックスに到達しました。
メソッドの戻り型(具象型またはインターフェース)のより良い選択は何ですか?
ほとんどの場合、メソッドの戻り型として具象型を使用する傾向があります。なぜなら、具体的なタイプは、さらに使用するためにより柔軟であり、より多くの機能を公開すると信じているからです。
これの暗い面:カップリング。天使のようなもの:具体的なタイプには、最初に返すインターフェイス自体と、追加の機能が含まれています。
あなたの親指のルールは何ですか?
このためのプログラミングの原則はありますか?
ボーナス:これは、メンバーコレクションを公開するためのReadOnlyCollectionまたはIEnumerableの意味の例ですか?
design-patterns - プログラマーが知っておくべき/知っておくべきパターンと原則のリストは何ですか?
コーディングを始めて数年になりますが、自分の知識はプロになるにはまだ足りないと感じています。デザインパターンに関する本を何冊か読んだことがありますが、他にもたくさんの本があることは知っています。
では、より優れたプログラマーになり、より専門的になるために学ぶのに良いと思われるパターンと原則を誰か挙げてもらえますか?
私が取り組んでいるプログラミング言語: C#、Ruby、Javascript。
java - Java-次のように、問題にフィールドまたはクラスを使用する必要があります。
DBに2つのテーブルがあります
- FuelStation(fuel_station_id:int(PK)、fuel_station_name:varchar、fuel_brand_id:int(FK))
- FuelBrand(fuel_brand_id:int(PK)、fuel_brand_name:varchar)
ご覧のとおり、両方のテーブルはを介してリンクされています。外部キー(fuel_brand_id)
ここで、上記のデータモデルに対応するオブジェクトモデルを設計したいのですが、次の2つのアプローチからどちらのアプローチを使用するか混乱しています。
- クラスを1つだけ作成し、クラスのように
FuelStation
燃料ブランドを保管するかどうか。String
FuelStation
また
- 2つのクラスを作成します:
FuelStation
とFuelBrand
。そして、 1つの燃料ステーションには1つの燃料ブランドしかありませんが、1つの燃料ブランドには多くの燃料ステーションを含めることができるため、それらを多対1の関係に関連付けます。
Q1。どちらのアプローチが良いですか?
Q2。各アプローチの長所と短所は何ですか?
私の知識まで:
アプローチ2の長所
これにより、オブジェクトモデルがよりきめ細かくなりました。
Acc。優れた設計原則に従えば、オブジェクトモデルは少なくともリレーショナルモデルと同じくらいきめ細かくなければなりません。そしてapproach2はその原則に従います
アプローチ1の長所
- FuelStationごとにFuelBrand用に個別のオブジェクトを作成する必要はありません
design-principles - 仮想メソッドの使用はLSP(SOLID原則のL部分)に違反しますか、それともいくつかの例外がありますか?
仮想メソッドの使用はLSP ( SOLID原則のL部分)に違反しますか、それともいくつかの例外がありますか?
よろしくお願いします、Saghar Ayyaz