私はアプリケーションでマウスクリックを処理しようとしていますが、多くの条件があるのでロジックが非常に混乱しています。例えば、私は次の知っておく必要があります。コントロールキーが押された-ifマウスをクリックするロジックのネストされたif文を処理するには?
それが左または右マウスボタン
それがミドルやグラフィックスオブジェクトの側だった-ifた-if
クリックしたときにグラフィックオブジェクトが既に選択されているかどうかを確認してください。
、将来的にはさらに多くの条件があります。
現時点では、過度のネストされた条件のためにルールを書くのはかなり混乱します。あまりにも悪くないです。私はちょうど良い方法がなければならないように感じる。
入れ子条件をポリモーフィズムに置き換える方法についてたくさん読んだことがありますが、ここでそれが適用されるかどうかはわかりません。
EDIT:重要かどうかわかりませんが、C++を使用しています。
ここでは例です: - その後、どのように考える
if (leftMouseClick)
{
if (!controlClicked)
{
if (!clickedOnRightOfNote)
{
if (!isAlreadySelected())
{
// stuff
}
else
{
// stuff
}
else
{
if (!isAlreadySelected())
{
// stuff
}
else
{
// stuff
}
など...
どのような言語ですか?質問を更新し、言語にタグを付けるとともに、コードの例を投稿してください。 – Oded
おそらくロジックを[ステートマシン](http://en.wikipedia.org/wiki/State_machine)として記述する必要があります。それは理由を考えるのがはるかに簡単になります。場合によっては、テーブル内のすべてのロジックをエンコードすることさえできます。 –
すべてを知っている1つのモノリシックハンドラではなく、ロジックをハンドラ(個別のアクションごとに1つ)に分けることを検討しましたか?結束を高めるのに役立ちます。もちろん、それは各行動が独立していると仮定します。そうでない場合、これは良い方法ではないかもしれません。 – Cameron