IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    编写一个友好的命令行工具

    Yiran\'s Blog发表于 2022-02-26 19:50:44
    love 0
    背景 链接到标题 关于命令行设计的一点总结。 有用的帮助信息 链接到标题 提供的命令行中所有的命令、子命令、选项都有明确的帮助信息,便于用户在使用过程中查看。帮助信息查看方式最好统一,比如统一使用 -h 格式、 COMMAND help 或者 COMMAND --help 。 尽量使用 Flags 而不是 Args 链接到标题 命令行可以接受 2 种类型的参数输入:Flags 和 Args。Flags 需要更多的输入,但会使命令行更清晰。我在实现一个命令行时,通常会将必选项设置为 Args ,将可选项设置为 Flags,但是有时候会导致用户在使用过程中觉得传递参数方式不统一,而且当 Args 有多个时(是的,我之前设计的一个命令行输入的 Args 多达 5 个)用户敲着敲着就不知道自己该输入什么了。如果在后续对命令行进行重构时,为了保证接口的兼容性,Args 通常是需要保证不变的,而 Flags 没有这个困扰。 明确显示当前版本 链接到标题 在使用过程中,如果遇到了问题,那么通常需要上报命令行版本反馈,需要明确给出当前命令行所指定的版本。通常会有 -v, -V, --version, version 等子命令,其中 -v 和 -V 有可能会跟 verbose 混淆,建议将版本作为一个独立的子命令 version 来实现。 针对 stdint, stdout, stderr 正确处理 链接到标题 如果已知一个命令行的执行耗时较长,那么用户通常执行命令时会选择将 stdout 重定向到指定文件中,便于后续查看执行过程输出,留存。但是如果在执行过程中出现异常,那么尽量将异常信息通过 stderr 输出,及时暴露给用户。默认情况下 stdout 被重定向之后,stderr 仍会打印在终端中。 明确的错误信息 链接到标题 当用户在执行命令过程中遇到错误,需要尽可能的显示多的、有用的信息出来:错误码、错误描述、错误信息。给出的信息是人类友好的,毕竟针对错误进行调试的是我们自己。尽量保证自己的命令行提供调试模式(类似于 Shell 中的 set -x ),便于 debug。


沪ICP备19023445号-2号
友情链接