1

GUIの一部のクラスがあります。switchこれは、GUI スイッチを任意の位置に配置するパブリック メンバー関数を持つトグル スイッチです。GUI要素をクリックするonToggleと、関数を呼び出すGUIとともにイベントが発生しswitchます。

これを実装するための私の選択(私が検討していて、あなたのアドバイスが欲しい)は次のとおりです。

1)setOnclickコントローラーがイベントの発生を要素に割り当ててswitch関数呼び出しを処理するために使用できるパブリックメンバー関数を作成します。

toggleInstance.setOnclick(function() {
    onToggle.fire();
    toggleInstance.switch();
})

2)イベントの発生とswitch関数呼び出しをクラス自体の中に入れることができます

element.onclick = function() {
    onToggle.fire();
    public.switch();
}

GUI クラス (私のトグル スイッチなど) にロジックや機能がまったくないのはいいことだと思いますが、これが必要かどうかはわかりません。

私は MVC フレームワークを使用していませんが、MV と C の間で機能を分離するという原則を適用したいと思っています。

将来、どちらの方法にも潜在的な欠点があると思いますか?

4

1 に答える 1

2

HTML/CSS/JavaScript:

クライアント側のコードには、コンテンツを表す HTML、そのコンテンツの表示を定義する CSS、およびコンテンツと表示要素の動作を決定して割り当てるために使用する JavaScript があります。

要するに、あなたはここで正しい考えを持っています。JavaScript を HTML から除外し、HTML を JavaScript から除外するだけで、アーキテクチャの適切な計画に関して多くのことができました。

JavaScript では MVC に従うことができますが、ほとんどの場合、HTML がコンテンツであり、JavaScript が動作であり、CSS がプレゼンテーションであることを覚えている限り、コードを高度に保守しやすくするために多くのことを行ってきました。

そうは言っても、JavaScript に注目しましょう。

MVC:

あなたは正しい考えを持っていると思いますが、最初のサンプル関数の名前は正確ではないかもしれません。「setOnclick」というと、onclick イベントを発生させるのではなく、onclick イベントを設定していると思います。

したがって、私はこれを想像します:

// reuse this same function to bind that same event to other similar buttons
toggleInstance.setOnclick(function(element) {

    element.onclick = function() {
        onToggle.fire();
        public.switch();
    }
});

そのイベントを繰り返すために複数のコントロールが必要な場合は、単にその要素を渡して、同じクリック ハンドラーをバインドするだけです。

別の関数で実際のイベントハンドラーを定義することで、さらに一歩進めることができます

// event handler is now named, so it can be easily reused
toggleSwitch: function() {
    onToggle.fire();
    public.switch();
}

toggleInstance.setOnclick(function(element) {

    // bind the event to the element passed in
    element.onclick = toggleInstance.toggleSwitch;
});

私の唯一のアドバイスは、過度に設計しないように注意することです。MVC はバランスが取れたものであり、過度に設計されたものは、不用意に設計が不十分なものと同じように扱いにくく、操作が困難になる可能性があります。

これらの詳細について考えているのは良いことです。どのイベントを再利用してそれらに集中する必要があるかを知っていれば、技術的負債の削減という形で見返りが得られます。

于 2012-05-19T02:21:43.640 に答える