有很多GUI最佳实践。我在开发命令行程序时正在寻找最佳实践。
例如,如果我创建备份程序最好的是什么?
考虑1,调用:
program.exe备份
program.exe / backup
program.exe -backup
program.exe --backup
考虑2,参数:
program.exe备份“C:\ file1.txt”“C:\ file1.bak”(隐式源和目标)
program.exe backup -source“C:\ file1.txt”-destination“C:\ file1.bak”(显式)
program.exe backup -source“C:\ file1.txt”“C:\ file2.txt”“C:\ file3.txt”-destination“C:\ files.bak”(多个来源)
program.exe backup -source“C:\ file1.txt”-source“C:\ file2.txt”-source“C:\ file3.txt”-destination“C:\ files.bak”(多个来源,替代语法)
考虑3,链接:
program.exe备份“C:\ file1.txt”“C:\ file1.bak”backup“C:\ file2.txt”“C:\ file2.bak”(应该允许这样做吗?)
考虑4,输入经济:
program.exe备份
program.exe bkp
program.exe b(所有这些都应该是同一命令的别名吗?)
答案 0 :(得分:2)
我总是喜欢什么(从大多数到最不重要的顺序):
所以在Windows上我会选择/
作为前缀(遵循约定),/source
和/destination
(最容易理解且最不明确)并且不允许链接解析复杂性,所以:
program.exe / backup / source:“c:\ source”/ destination:“c:\ destination”
一定也允许参数名称的缩写版本,因此您可以将上述内容缩小为:
program.exe / b / s:“c:\ source”/ d:“c:\ destination”
但是不要让它变得更加神秘。此外,还包含一个/?
参数,可用于列出程序的语法。正如 Peter M 在我的回答评论中指出的那样,当用户调用您的程序而不指定任何参数时,最好与/?
做同样的事情。没有什么比运行CLI程序和接收更有帮助,更令人沮丧的无用了:
计划名称v1.01
未指定参数,请使用
/?
获取帮助
与最后一点相关的另一个重要事项是:不要重新发明轮子。那里有无数的命令行解析器,看一下this question的答案作为起点(如果你使用C#定位Windows)。 做一些其他人已经做好的事情,不要做平庸的工作。
答案 1 :(得分:1)
除了使用单个短划线的单个字符等效短格式外,我更喜欢使用双短划线作为长名称。
如果你正在制作一些非常重要的东西,我还建议总是使用一个开关名称,并根据开关的作用选择开关值。
例如,备份支持:
program.exe --backup
program.exe -b
并恢复对以下方面的支持:
program.exe --restore "5/6/2010"
program.exe -r "5/6/2010"
对于以下两者的帮助支持:
program.exe --help
program.exe -h
答案 2 :(得分:1)
绝对参数和/ Help开关来解释用法。因此,最终用户可以自由地放置哪个参数,因此不会强制参数的特定顺序
答案 3 :(得分:1)
--long-option-name
和-lon
获取可选参数。backup.exe
,而不是使用backup
作为program.exe
的命令。这适用于一般的UNIX / Linux规则。对于Windows,它们完全不同。
/source
和/destination
。想象一下,如果cp
(copy
)需要它,那就太好了。答案 4 :(得分:1)
通常,您应该遵守平台的惯例。不幸的是,Microsoft Windows在命令行界面上非常不一致!因此,你应该同样不一致。我认为在这种情况下理想的模型是着名的不一致dd
:
dd if=C:\file1.txt of=C:\file2.bak
没有别的东西了。
答案 5 :(得分:0)
对初学者来说,我会放弃program.exe
语法,只需去backup.exe
我自己喜欢/option:<value>
语法。我可能希望能够做到以下几点:
backup /d:"c:\mydirectory" /o:"c:\mybackup.bak"
backup /f:"c:\mydiredctory\myfile.txt" /o:"c:\mybackup.bak"
backup /f:"mydiredctory\myfile.txt,mydiredctory\myfile2.txt" /o:"c:\mybackup.bak"
答案 6 :(得分:0)
我建议找一个库,它允许您定义命令行参数并正确解析它们,同时还打印出用于将所有参数定义到应用程序用户的使用说明。应该有大量的开源库可用于多种语言和平台。