我应该在主类或其他地方解析输入参数吗?

时间:2015-05-24 00:08:27

标签: java class parsing input main

我有一个包含main方法的类,我一直想知道是否应该解析输入参数并检查它们在main或我传递这些参数的对象中是否正确。是什么让课程更可重复使用?

1 个答案:

答案 0 :(得分:1)

理想情况下,您需要制作干净的模块化代码。想象一下,如果有一天你决定需要从命令行以外的地方获取参数。

一个很好的方法是使用一个接口ArgumentParser,代码的其余部分可以使用(例如,通过将实现该接口的实例传递给代码的任何部分来读取参数)。对hasSwitch--foo等方法,getValue--foo=bar等方法,包括A::B等方法。

如果您需要从其他位置获取参数(例如交互式用户提示,配置文件等),则只需更改几行代码即可实例化不同类型的参数解析器。

应该在两点检查参数:

  • 配置文件/命令行/ etc的语法有效性应由解析器本身完成。如果它不能解析 args,那么程序的其余部分就没有企业尝试使用这些参数。解析通常特定于表示类型,因为命令行中的args将不同于配置文件中的设置。
  • 参数的语义有效性应该在程序中实际作用于这些参数的部分中完成。假设一个模块取0-10的数字。您只需要在该模块中添加此检查,而不是在每个解析器中。此外,如果有一天您更新模块并且它现在可以使用最多20个数字,那么您只有一个与模块本身逻辑相关的点,您需要更改有效性检查。