CLIを設計するときにオプションまたはサブコマンドを使用するためのデフォルト設定/経験則がありますか? [閉鎖]

CLIを設計するときにオプションまたはサブコマンドを使用するためのデフォルト設定/経験則がありますか? [閉鎖]

たとえば、パッケージをインストールするには、pacman次のようにします。誰かが入力している
pacman -S <package>
間:このオプションを使用しながらサブコマンドを使用します。dnf
dnf install <package>
pacman-Sdnfinstall

他の例には、nmcliand tar、with nmcli connection up <connection>(サブコマンドを使用)、およびtar -xzvf <file>(オプションを使用)があります。

それぞれの長所と短所は何ですか、それとも個人的な好みですか?

ベストアンサー1

より技術的な用語は「サブコマンド」です。それぞれ独自のオプションセットを持つ多くのサブコマンドを含むコマンドでコマンドラインインターフェイスを設計するのが一般的です。時には、サブコマンドに独自のサブコマンドがある場合があります。 gitは次の例です。

git remote add -f -t "$BRANCH_NAME" "$REMOTE_NAME" "git://example.com/repo"

CLIをサブコマンドに分割する理由の1つは、CLIがさまざまな関連タスクを実行できることを強調することです。包装、包装、包装、包装用、包装表示などがdnfできます。すべて完全に異なる作業です。これらのタスクの多くには、オプションで調整および選択できる追加のノブがあります。installremoveupgradesearchinfo

サブコマンドを使用するもう1つの理由は、サブコマンドがオプションの名前空間を提供するためです。 inは--allinとdnf list --all全く異なることを意味します。--alldnf search --all

大規模なCLIをサブコマンドに分割するもう1つの理由は文書化です。 gitにサブコマンドがない場合はどうなるか想像してください。完全なGitマニュアルは、Gitの各オプションとこれらのオプションがどのように関連しているかを詳しく説明する1ページです。さらに:実行git commit --help- サブコマンドに関するヘルプページが表示されますcommit。もう一つ:インストール概要実行すると、サブコマンドごとのtldr git commitチートシートが表示されますcommit

別の考慮事項はいいえサブコマンドで有効になっている動作モードを組み合わせるには、サブコマンドを使用します。単一のコマンド呼び出しに複数のオプションを指定できますが、サブコマンドのみを指定できます。

おすすめ記事