正确设计命令行参数?

时间:2013-09-13 13:17:58

标签: java command-line command-line-arguments

我有一个Java类API,如下所示:

boolean categoryAdd( String name, String description, String user );

我需要为它创建一个等效的命令行。

命令行参数如何?

喜欢这个

-categoryadd name description user

或者像这样

-categoryadd -categoryname name -categorydescription description -categoryuser user

或者像这样

-categoryadd -categoryname=name -categorydescription=description -categoryuser=user

还是其他什么?

2 个答案:

答案 0 :(得分:1)

常用用法表示单个字符(短)选项的格式为-v,多字符(长)选项的格式为--verbose

http://en.wikipedia.org/wiki/Command-line_interface

请认真考虑使用CLI解析库,为您和更多人处理所有这些。

我的偏好是JSAP,它功能齐全,稳定且非常实用。较新的库使用@Annotations和其他东西,但这可以让我完成。

答案 1 :(得分:0)

在由空格分隔的java命令行字符串中,因此当您从CLI调用方法时,如:

  

java MyClass categoryadd名称描述用户

,在你的主要课程中,你将收到4个值的args:

  • categoryadd
  • 名称
  • 描述
  • 用户

这样可以很容易地操作(验证)参数,因为您不需要进行额外的操作来提取传递的变量。

从用户方面的另一方面来看,如果没有附加信息,那么通过哪种参数以及以何种顺序传递它会让人感到困惑。 在你的第二和第三个命题中,你“帮助”用户确定他传递的参数。我更喜欢使用equals的第三个命题,因为它很容易解析: 您将收到如下参数:

  • -categoryadd
  • -categoryname = name
  • -categorydescription =描述
  • -categoryuser =用户

现在你先延迟,然后用string.split(=)方式解析键值。 你的第二个选择也可以完成,但我认为它更棘手