【问题标题】:What is the Proper Way to Specify "Usage" in Command Line Arguments for Java Main method?在 Java Main 方法的命令行参数中指定“用法”的正确方法是什么?
【发布时间】:2013-10-03 18:46:30
【问题描述】:

我有一个 main 方法,它接受无限数量的参数。

它的形式是:

    if (args.length == 0) {
        // This is what I would like to explain better
        System.out.println("Usage: selectField1 [...] whereConditionField:Value [...]");
        System.exit(0);
    }
    List<String> selectList = new ArrayList<String>();
    BooleanQuery booleanQuery = new BooleanQuery();
    for (String arg : args) {

        if (arg.contains(":")) {
            // Argument is a WHERE condition
            String[] keyValue = arg.split(":");
            Term term = new Term(keyValue[0], keyValue[1]);
            booleanQuery.add(new TermQuery(term), BooleanClause.Occur.MUST);
        } else {
            // Argument is a SELECT field
            selectList.add(arg);
        }
    }

在 Usage 输出中解释这一点的正确方法是什么?

【问题讨论】:

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


    【解决方案1】:

    这是一个主观问题,因为对某些人来说容易理解的事情对其他人来说可能很困难。你可以使用类似一些linux命令工具的格式,例如:

    man cat 
    

    输出:

    NAME
        cat - concatenate files and print on the standard output
    
    SYNOPSIS
        cat [OPTION]... [FILE]...
    

    [OPTION]... 符号被广泛用于指示多个(可选)参数。另外,以命令行utilltyzip为例,不带选项运行时会输出:

    Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
    Zip 3.0 (July 5th 2008). Usage:
    zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
    ...
    

    明确表示您希望zipfile list 易于用户理解。

    在你的情况下,类似于:

    Usage: [SELECT_FIELD]... [WHERE_CONDITION_FIELD:VALUE]...
    

    或者

    Usage: [field_list] [condition_pair_list]
    

    或任何其他组合...可以肯定的是,如果您希望您的用户了解命令行程序的正确用法,没有什么比示例更好的了,请将格式与一个(或几个)用法示例一起打印:

    Usage: [SELECT_FIELD]... [WHERE_CONDITION_FIELD:VALUE]...
    Example:  
           java programName field1 condition1:Test field2 conditionName:foo
    

    【讨论】:

      猜你喜欢
      • 2011-10-19
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 2015-05-06
      • 1970-01-01
      • 2012-06-02
      • 2022-01-13
      相关资源
      最近更新 更多