問題タブ [software-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.

0 投票する
2 に答える
129 参照

php - このシナリオで使用するのに最適なソフトウェア設計は何ですか

jQuery を使用して HTML スニペットを生成する必要があります。これらのスニペットの作成は、一部のデータに依存します。データはサーバー側のセッション (PHP が使用される場所) に保存されます。

現時点では、
AJAX を介してサーバーから JSON の形式でデータを取得し、
それらのデータを読み取る特定の JavaScript 関数を介してスニペットを構築することで、これを達成しました。

問題は、データの複雑さが増していることです。そのため、JSON へのシリアル化は自動的に行うことができないため、さらに困難になっています。一部の情報は賢明であるため、自動的に行うことはできないため、「削除された」バージョンを生成してクライアントに送信します。

読むコードがないと理解するのが難しいことはわかっていますが、これが一般的なシナリオであることを願っています。ヒント、提案、またはデザインパターンを教えていただければ幸いです。

完全なデータと削除されたデータの両方をサーバーに保存し、一部のライブラリを使用して、削除されたデータから JSON を自動的に生成する必要がありますか? しかし、これは、2 つのデータを同期させる必要があることも意味します。
または、ロジック サーバー側を移動して、データの送信を回避することもできます。しかし、これは JavaScript コードを送信することを意味します (私は jQuery に依存しているため)。たぶん良い考えではありません。

これが明確でない場合は、お気軽に詳細をお尋ねください。

助けてくれてありがとう

0 投票する
12 に答える
328920 参照

frameworks - ソフトウェア フレームワークとは

ソフトウェアフレームワークとは何か説明してもらえますか? なぜフレームワークが必要なのですか?プログラミングを容易にするためにフレームワークは何をしますか?

0 投票する
13 に答える
23250 参照

c# - すべてのクラスのインターフェースを抽出することがベストプラクティスですか?

私は、すべてのクラスがそれが実装するインターフェースを持っているコードを見てきました。

それらすべてに共通のインターフェースがない場合もあります。

それらはただそこにあり、具体的なオブジェクトの代わりに使用されます。

これらは2つのクラスの汎用インターフェースを提供せず、クラスが解決する問題のドメインに固有です。

それをする理由はありますか?

0 投票する
3 に答える
1796 参照

oop - OOP で有限状態オートマトンを実装する

Java や C++ などの OOP 言語で有限状態オートマトンを使用するプログラムを実装することを考えています。

優れたソフトウェア設計に関して、管理可能な量の利用可能な状態でこれを実装する最良の方法は何だと思いますか?

状態ごとに独自のクラスを実装するのは良いことですか? はいの場合、2 つの状態の間の橋渡しを行うにはどうすればよいですか?

コメントありがとうございます!

0 投票する
2 に答える
392 参照

scripting - 私のC ++クラスへのLuaバインディングを作成するための正しいソフトウェアエンジニアリングアプローチ?

C++ Classes コンストラクターを Lua に登録する最良の方法を見つけようとしています (コーディングの観点ではなく、ソフトウェア設計の観点から)

どうすればいいですか?

私のアイデア:

1) Lua で使用できるようにしたい各 C++ コンストラクターをバインドする「init Lua bindings」ファイルを作成しますか? (問題: このファイルはどんどん大きくなり、同期/デバッグが困難になる傾向があります)

2) 各クラスは、自分の「LuaManager」クラスに独自のコンストラクターを登録する責任があります (問題: 種類 A の同じクラスに対して同じコンストラクターを何度も Lua にバインドするのはばかげているため、理想的には、各種類のスクリプト可能なこのアプローチを使用する場合、クラスはそのコンストラクターを Lua に一度だけバインドする必要があります。)

アイデア、または意見は大歓迎です。

0 投票する
16 に答える
397133 参照

oop - 凝集度と結合度の違い

凝集度と結合度の違いは何ですか?

結合と凝集度は、どのようにしてソフトウェア設計の良し悪しにつながるのでしょうか。

2つの違いと、全体的なコード品質への影響を概説するいくつかの例は何ですか?

0 投票する
2 に答える
961 参照

.net - WCF (キャッシュ) を使用したバックグラウンド ワーカー プロセス

私は、LDAP システムでのレプリケーションの遅延を補うプロセスを構築する任務を負っています。現在、1 つの書き込みサーバーと 4 つの読み取りサーバーがあります。エントリを書き込みサーバーに書き込んだ後、エントリが読み取りサーバーに複製されるまでに、システムで最大 4 秒の遅延が発生する可能性があります。したがって、レコードを更新するサービス「A」を呼び出し、その直後にそのレコードを読み取るサービス「B」にアクセスすると、データが古くなります。

この問題を解決するために、アプリケーションがデータベースと直接インターフェイスするのではなく、キャッシュ サービスを介してインターフェイスするように、キャッシュ Web サービスを構築することを計画していました。サービスは、すべての作成、更新、および削除をキャッシュ (おそらくList<ModelObject>) に格納します。CRUD - R エントリは、最低 4 秒間キャッシュに残る必要があります。次に、サービス「B」が読み取りを試みると、キャッシュ サービスは、データベースで読み取り操作を実行する前にキャッシュをチェックします。

だから、私の質問は2つの部分です。1) これは実行可能な解決策ですか? そうでない場合、どのような問題がありますか? 2) WCF サービス内でキャッシュに対してメンテナンスを行うにはどうすればよいですか。つまり、キャッシュから 4 秒経過したエントリをクリアするバックグラウンド ワーカー スレッドを開始する方法はありますか?

0 投票する
1 に答える
429 参照

iphone - プッシュされたコントローラーからUINavigationControllerにアクセスする最もエレガントな方法

NavigationController-> Root [Table ViewControllerサブクラス]があるとします。TableViewControllerサブクラスからdidSelectRowAtIndexPath、別のViewControllerをNavigationControllerにプッシュする必要があります。

NavigationControllerにアクセスするための最もエレガントな方法は何ですか?Table View ControllerでNavigationControllerのデリゲートを使用する必要がありますか?階層レベルから最上位オブジェクトにアクセスする複数のタスクがある場合、これは最善のアプローチですか?

0 投票する
2 に答える
894 参照

iphone - manageObjectContextをビュー/コントローラー階層に渡す

ほとんどの場合、管理対象オブジェクトのコンテキストはアプリケーションデリゲートで作成されます。ツリー内のすべてのナビゲーション/タブコントローラーがアクセスできるように、ビュー/コントローラー階層に渡す方法は何ですか。私は毎回この情報を携帯する必要があり、特定の子の方法のすべてのコントローラーがそれを必要としない場合があるため、親から子に毎回それを渡すことは最善ではないかもしれません。

0 投票する
6 に答える
2471 参照

data-structures - 単位変換に適したデータ構造?

StackOverflowの群集。非常に自由なソフトウェア設計の質問があります。

私はしばらくの間これに対する寛大な解決策を探していました、そして私はここの誰かが問題への素晴らしい洞察を持っているかどうか疑問に思いました。これはデータ構造のパズルのようなものだと考えてください。

私がやろうとしているのは、任意の単位から任意の単位に変換できる単位変換器を作成することです。字句解析と構文解析がすでに行われていると仮定します。いくつかの簡単な例:

物事をもう少し複雑にするには、入力間のあいまいさをスムーズに処理する必要があります。

物事をさらに楽しくするには、すべての可能性を列挙する必要なしに、複雑なユニットを処理する必要があります。

正解も不正解もありません。これを実現するためのアイデアを探しています。力ずくの解決策は常にありますが、シンプルでスケーラブルなエレガントなものが必要です。