簡體   English   中英

在Java Main方法的命令行參數中指定“用法”的正確方法是什么?

[英]What is the Proper Way to Specify “Usage” in Command Line Arguments for Java Main method?

我有一個主方法,可以接受無數個參數。

它的形式為:

    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);
        }
    }

在用法輸出中解釋此問題的正確方法是什么?

這是一個主觀的問題,因為對於某些人來說容易理解的內容對於其他人來說可能很難。 您可以使用某些linux命令工具的格式,例如:

man cat 

輸出:

NAME
    cat - concatenate files and print on the standard output

SYNOPSIS
    cat [OPTION]... [FILE]...

[OPTION]...符號廣泛用於表示幾個(可選)參數。 另外,以命令行utillty zip為例,在運行時不帶選項將輸出:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM