我有一个主方法,它接受无限数量的参数。
它的形式为:
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输出中解释这个的正确方法是什么?
答案 0 :(得分:1)
这是一个主观问题,因为对某些人来说容易理解的事情对其他人来说可能很难。您可以使用类似于某些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