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



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

理想情况下,您希望编写干净、模块化的代码。想象一下,如果有一天您决定需要从命令行以外的其他地方获取参数。

一个好方法是使用接口ArgumentParser,其余代码可以使用(例如,通过将实现该接口的实例传递给需要读取参数的代码的任何部分)。对于像--foo这样的参数,包括像hasSwitch这样的方法;对于像--foo=bar这样的参数,包括像getValue这样的方法。

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

参数应该在两个点检查:

  • 配置文件/命令行/等的语法有效性应该由解析器自己完成。如果它不能解析参数,那么程序的其余部分就没有必要尝试使用这些参数。解析通常是特定于表示类型的,因为命令行中的参数的格式与配置文件中的设置不同。
  • 参数的语义有效性应该在实际操作这些参数的程序部分完成。假设一个模块取0-10之间的数字。您只需要在该模块中添加一次检查,而不需要在每个解析器中都添加一次。此外,如果有一天你更新了模块,它现在可以处理高达20的数字,你只有一个点已经在逻辑上与模块本身相关,你需要改变有效性检查。

相关内容

  • 没有找到相关文章

最新更新