在每个按钮的功能取决于状态的情况下,处理来自硬件按钮的用户输入的合适软件设计方法是什么?
我正在设计一种乐器,它有很多硬件按钮(比如新洗垫或Monome网格)。我习惯于构建基于屏幕的软件,您可以根据上下文显示和隐藏按钮,每个按钮通常只有一个功能。但是硬件按钮是一个非常不同的挑战,我的代码正在迅速变成无法管理的混乱的if语句。
例如,单个按钮可能具有以下功能:
Select键时按住它,否则它会选择剪辑。Select未被保存。Delete,它将删除剪辑。..。所有这些都只是应用程序的一个视图,其他视图可能完全不同。
这显然是某种状态机,但是状态的数量是巨大的--如果你考虑到你可以在其中编程任何歌曲的话,实际上是无限的--所以我不确定这是否是一个有用的抽象。我看过Monome网格教程,但它们的示例并不比我的代码好。
发布于 2022-06-21 09:54:40
我设计这样一个系统的方法是将按钮处理逻辑与应用程序逻辑分离,从按钮按下生成(主要是)状态无关的事件,并且只处理应用程序状态机中的那些事件。
与您的示例一起使用,并假设按下的按钮为nr。42,然后
https://softwareengineering.stackexchange.com/questions/439375
复制相似问题