問題タブ [code-separation]
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++ - C ++ヘッダーファイル、コード分離
私はC++を初めて使用し、コードの分離についていくつかの一般的な質問がありました。私は現在、すべて1つのファイルに小さなアプリケーションを作成しました。私が今やりたいのは、これを別々のファイルに変換して、同様のコードなどが含まれるようにすることです。今の私の本当の質問は、どうすれば物事を分離する方法を知ることができるかということです。コードを分離する必要がある目に見えないマージンはどれくらいですか?
また、ヘッダーファイルのポイントは何ですか?コンパイル中にリンカーに含まれる前にコードで使用できるように、メソッドとクラスを前方宣言するのですか?
方法やベストプラクティスについての洞察は素晴らしいでしょう、ありがとう!
c++ - 複数のシングルトン インスタンス
私はユーティリティ クラスのライブラリを作成していますが、その多くはシングルトンです。私は継承を使用してそれらを実装しました:
明らかにこれは単純な例であり、実際のクラスではありません。とにかく、次のようなコードを使用していることがわかります。
SomeClass の複数のインスタンスを作成します。これは、ライブラリ (.a) ファイルの外部と内部で使用されていることが原因である可能性があると考えています。たとえば、自分で作成したものではない UI ライブラリを使用しており、これを個別にコンパイルして追加しています。これらの追加のいくつかは、私の .a ライブラリでも使用されているシングルトンを利用しています。
別のコンパイルがこれを引き起こしていますか?他の何か?
この問題を回避する唯一の方法は、必要なシングルトンで初期化する main.cpp ファイルにグローバル オブジェクトを作成することです。次に、すべてのコードが次のような呼び出しでこの共通グローバル オブジェクトにアクセスします。
別のシングルトンを作成するたびに、このオブジェクトにメソッドを追加しなければならないのは嫌です。さらに、最初のアクセス方法を使用すると、構文がより明確で親しみやすくなります。
ご意見、ご感想等ありましたらお聞かせください。
ありがとう。
php - コード分離のパラドックス: 多次元配列から HTML ツリーを作成し、HTML を再帰関数の外部に保持する
この作業コードは、この問題の典型的な解決策のようです。
カテゴリとそのサブカテゴリを保持する多次元配列を取り (深さのレベル数に暗黙の制限はありません)、そこから HTML の順序付けられていないリストを作成し、再帰関数内からページにエコーアウトします。
サブレベルは、_category_list()_ という名前の元のコールバック関数内から、各配列要素の「子」キーの値を array_walk() に再帰的に渡すことによってトラバースされます。
すべての HTML コードが関数の外のテンプレートに存在するように、この出力方法を変更するにはどうすればよいでしょうか?
コードの概要は次のとおりです。
この多次元配列は、複数レベルのカテゴリ ツリーを保持します。
HTML で使用する重要なキーは、「category_id」、「name」、および「children」です。簡単にするために、他のキーは以下の配列から削除されていますが、有用な場合は、'parent_id' と 'level' (レベル 1 から開始) です。
.
この次の関数は、HTML 出力の大部分を生成しますが、HTML を内部にロックします。
ただし、関数から直接エコーするのではなく、デザイナーがカスタマイズしやすい方法で、このデータをビュー テンプレートに戻す方法を探しています。
.
コードの次のブロックは、現在のテンプレート html/php で、array_walk() を介して配列の最初のレベルをトラバースし、上記の再帰関数を参照する呼び出しを含みます。次に、関数自体が、1 つ以上の子を持つより深いカテゴリの再帰と反復を処理します。もちろん、これは典型的なアプローチです。
このコードには、外側のタグだけでなく、すべての HTML タグを含める必要があります。
.
理想的なソリューション:
ここでの最終目標は、テンプレート デザイナーが再帰関数 (アクセスできない) を作成または変更する必要なく、多次元の各レベルで foreach ループを使用する必要なく、理想的なナビゲーション構造を作成する方法を見つけることです。配列。ソリューションは、特定の深さの制限に結び付けられるべきではありません。
HTML のカスタマイズの例としては、ul/li タグ内に追加の属性を配置したり、CSS で引き戸効果を実現するためにナビゲーションで一般的に使用される span タグなどの出力テキストを新しいタグで囲んだりすることまで、さまざまです。したがって、適切なソリューションは、少なくともこれらのケース シナリオをサポートする必要があると思います。
array_walk() を使用してテンプレートから配列を反復処理しても、コールバック関数が目的の変数をテンプレートに戻してデザイナーの HTML で使用できるように使用できる限り、問題ありません。
理想的には、もし array_walk_recursive() がその反復子が実際に何レベル深いかを知っていれば、この偉業は解決するのがはるかに簡単になると思います. しかし、誰かがその問題の回避策を知らない限り、解決策はまったく異なる可能性があります.
また、ツリーの構築に JavaScript メソッドを使用することも避けたいと考えています。また、スイッチの使用を避ける方法があれば、私も提案を受け付けています。
asp.net-mvc - .netmvc単一管理セクション複数サイト
望ましい結果:
個別のプロジェクトとしての4つの顧客向けサイト4つのサイトすべてで使用される1セットの管理コード
私の現在の設定は4つのプロジェクトです:
モデル/エンティティのコア
リポジトリのデータ
コントローラー用のコントローラー
ビューのWeb
現在、Webプロジェクトには、管理者側と顧客側のビューが含まれています。それを管理プロジェクトと4つの「顧客」プロジェクトに分割したいと思います。
私はグーグルでウェブアプリからウェブアプリを参照することにほとんど成功していません。haacked.comのエリアについて読んだことがありますが、それは正しくないようです。マークアップのデバッグ/コーディング中に苦痛を伴うため、特にdllにビューを埋め込みたくありません。明らかに、コードの複数のコピーは必要ありません。
誰かがこれを行うための可能な方法を指摘または提案できますか?私は少し困惑しています。
php - PHP:情報と警告メッセージのテキストはどこに保存すればよいですか
プロジェクトのコードの設計について質問があります。ほとんどの場合、コンテンツをコードから分離することが重要です(大きなアプリではHTMLとPHPが混在している=良い考えではありませんなど)が、エラーメッセージのテキストなどをどのように処理する必要がありますか?
この1つのメッセージが1つのケース/PHPファイルでのみ使用されると仮定します。
また
Lang
(sでいっぱいのいくつかの設定ファイルにあるクラスはどこにありますかconst
)
上記の例のような経験がある場合(すべてのPHPプログラマーはこのようなものに出くわすと思います)-それらは何ですか?どのようにそれを解決しますか?
より良い解決策は何ですか?
optimization - 現代の複雑なゲームでの達成システムの実装
最近作成された多くのゲームには、特定のタスクを達成したことに対してプレーヤー/ユーザーに報酬を与える独自のアチーブメントシステムが付属しています。ここでのstackoverflowのバッジシステムはまったく同じです。
しかし、私が良い解決策を見つけることができなかったいくつかの問題があります。
アチーブメントシステムは常に特定のイベントに注意する必要があります。たとえば、戦闘で20〜30のアチーブメントを提供するゲームを考えてみてください。サーバーは、これらのイベントを常にチェックする必要があります(たとえば、プレイヤーがこの戦闘で対戦相手のx攻撃を回避したか、プレイヤーがxマイル歩いた)。
- サーバーは、速度を落としたり、クラッシュしたりすることなく、この大量の操作をどのように処理できますか?
アチーブメントシステムは通常、ゲームのコアエンジンでのみ使用されるデータを必要とし、それらの厄介なアチーブメントがなければ、とにかくそこからは必要ありません(たとえば、各戦闘中にプレーヤーがジャンプする頻度を考えてみてください。このすべての情報をデータベースに保存したくない。)つまり、アチーブメントを追加する唯一の方法は、現在の状態をチェックするコードをゲームコアに追加することであり、これは通常、非常に悪い考えです。
アチーブメントシステムは、後で不要な情報を保持するゲームのコアとどのように相互作用しますか?(上記の例を参照)
それらはゲームのコアからどのように分離されていますか?
私の例は「無害」に見えるかもしれませんが、たとえば、World of Warcraftで現在利用可能な1000以上の実績と、同時にオンラインになっている多くのプレーヤーについて考えてみてください。
asp.net - ASP.Net MVC - 疎結合をサポートするためにイベントを置き換えるものは何ですか?
疎結合コンポーネントをサポートするために Web フォームでイベントを使用する方法を置き換えることができる ASP.Net MVC の機能はどれですか?
たとえば、Web フォームの単純なページャー コントロールを考えてみましょう。
- ページ番号をクリック
- ページャーは、新しいページ番号で「PageChange」イベントを発生させます
- このサブスクライブしているページ/コントロールはイベントを受け取り、新しいデータを取得してバインドするための呼び出しの開始を処理します。
同様にサポートする ASP.Net MVC で使用できるツール
- 疎結合
- コンポーネントの再利用性
- 単一のページ/ビュー (非常に複雑な「ポータル」タイプのページなど) のロジックの分離。
c# - C# での UI とロジックの分離
私のGUIクラスからロジックを除外するためのアドバイスはありますか? 私は優れたクラス設計を使用し、できるだけ分離したままにしようとしていますが、通常、私のフォーム クラスには、必要以上に多くの非 UI 要素が混在してしまい、メンテナンスが非常に面倒になる傾向があります。
(Visual Studio 2008 Professional、C#、Windows アプリ)。
どうもありがとう。
design-patterns - 特殊なタイプに基づいてデータオブジェクトの表現クラスを決定しますか?
私は、一般的な概念を説明するクラスと、その概念の分散を説明するサブクラスを持っている傾向があります。たとえば、Polygon
<|-{、、Rectangle
などTriangle
}。
ただし、これらの階層のさまざまな表現があることに気付くことがよくあります。たとえば、グラフィック表現(QPolygonなど)や物理表現(mass、centerOfMass)などを別の表現とは別にしたいと思います。
私の場合、純粋なデータオブジェクトの階層(Command
<|-{ WaitCommand
、UnknownCommand
など})があり、各データクラス(WaitCommandPanel
、UnknownCommandPanel
)に一致するGUI表現があります。
私の問題は、データ表現を作成したら、データからGUIに飛躍する必要があることです。
データオブジェクトのリストを前提として、対応するGUI要素を作成できるようにしたいのですが、2つの表現を分離したままにしておきます。
[お粗末な]解決策の1つは、それぞれがGUI表現を返すCommand
機能(つまり)を持つことです。Command::getPanel()
私のデータクラスには表現コードが含まれているので、これは好きではありません。
もう1つの解決策(当面は採用しました)は、ルックアップを実行することです。つまり、GUIを開始するときに、Command
sのリスト(一般化)が与えられると、関数はその特殊なタイプに基づいて作成するオブジェクトを決定します。私もこれが好きではありません。
助言がありますか?