编写更清晰,更模块化的命令解析器

arv*_*ixx 8 java design-patterns java.util.scanner

我正在为一个Z80模拟器编写一个调试器,我们正在学校项目中使用Java编写.调试器从用户读取命令,执行它,读取另一个命令等.

命令可以是参数较少,具有可选参数,也可以是无限量的参数.参数主要是整数,但偶尔它们是字符串.

目前,我们正在使用Scanner类来读取和解析输入.阅读方法看起来有点像这样(我写的是我的头脑,没有注意语法和正确性).

这是在项目开始时编写的一个kludge,随着我们向调试器添加越来越多的命令,这很快就失控了.

我对这段代码的主要问题是大量的重复,if/else-nestedness的高级别以及丑陋的一切.

我想建议如何使这个代码更美观和模块化,以及什么样的模式适合这种程序.

我还想了解更多有关代码风格的一般建议.

fuz*_*fle 1

您是否考虑过使用地图进行调度?哈希图很容易放在那里。只需将键设为命令,并创建一个作为命令的接口或抽象类,如下所示:

interface Commmand {
   void execute(String args);
}
Run Code Online (Sandbox Code Playgroud)

或者更好的是,你可以提前分解论点:

interface Commmand {
   void execute(String[] args);
}
Run Code Online (Sandbox Code Playgroud)

然后你将使用 HashMap<String,Command>。