我试图在应用程序中处理鼠标点击,但逻辑变得非常混乱,因为有很多条件。例如,我需要了解以下内容:如何处理鼠标点击逻辑的嵌套if语句?
- 如果控制键被按下
- 如果它向左或鼠标右键
- 如果它是中间或图形对象的侧点击
- 如果图形对象已被选中,或者在点击前未选中
并且未来可能会有更多条件。
目前,由于过多的嵌套条件而试图编写规则是相当混乱的。这不是太糟糕;我只是觉得必须有更好的方法。
我读过很多关于如何用多态性替换嵌套条件,但我无法弄清楚这是否适用于此。
编辑:我不知道它是否重要,但我使用的是C++。
下面是一个例子:
if (leftMouseClick)
{
if (!controlClicked)
{
if (!clickedOnRightOfNote)
{
if (!isAlreadySelected())
{
// stuff
}
else
{
// stuff
}
else
{
if (!isAlreadySelected())
{
// stuff
}
else
{
// stuff
}
等等...
什么语言?请更新您的问题,用语言标记它,并发布代码示例。 – Oded 2012-02-28 18:47:29
您可能需要将您的逻辑写为[状态机](http://en.wikipedia.org/wiki/State_machine)。推理起来会容易得多。在某些情况下,您甚至可以编码表中的所有逻辑。 – 2012-02-28 18:49:27
您是否考虑委托逻辑来分离处理程序(每个独立操作一个)而不是一个知道所有事情的单片处理程序?这将有助于增加凝聚力。当然,假定每个行动都是独立的;如果情况并非如此,这可能不是一个好方法。 – Cameron 2012-02-28 18:52:02