2

コマンド ライン オプションを受け入れるプログラムのメンテナンスを行っています。1 文字のオプションと長いオプションがあります。現在、長いオプションの前にはハイフンが 1 つあります。

多くのツールでは、長いオプションにハイフンが 2 つ付いています。そこにあるものと一貫性を持たせようとして、いくつかの GNU ツールを調べたところ、長い形式の場合、単一のハイフンと二重のハイフンが混在していることがわかりました。たとえば、GCC コンパイラには--help,--version-std,があり-funroll-loopsます。

そこで、この問題に関するドキュメントを検索したところ、この GNU ドキュメントが見つかりました。そこでは、GNU が推奨する長いオプションのスタイルは、2 つのハイフンで始めることです。

さて、GNU ツールがこれらの GNU の推奨事項に従わないのはなぜだろうか? 下位互換性の問題だと思いますが、それ以上のことはありますか?

私が書いたプログラムでは、オプションの構文を変更するとき、通常、古い形式は機能するが文書化されていないままにするか、少なくとも非推奨の警告を出します。GCC (およびその他の) プログラムでこれを行うことはできませんか?

4

2 に答える 2

2

変更しない理由はたくさんあります。

  • 既存のコマンド ライン オプションを使用する構成スクリプトとビルド ファイルは、文字どおり数百万 (おそらくそれ以上?) あります。最近のものも、とても古いものも。
  • 人々は現在の形式に慣れているため、ほとんどのプログラマーは何年もの間、習慣から既に知っているものを使用するだけです。
  • 引数解析コードはしばしば複雑であり、それを変更することはバグを導入する別の機会に過ぎません。
  • 古い下位互換性の単一のハイフンの長いオプションは、新しい複数の短いオプションの組み合わせと競合するため、下位互換性は困難です。
  • ここにさらに多くを挿入します。

変更する理由:

  • 多くのアプリケーションでまだ守られていない慣習に従うこと。

要するに、慣習は素晴らしいものであり、理想的には新しいものに従うべきですが、多くの場合、適合のためだけに変更する価値はありません。

于 2012-12-16T08:22:48.310 に答える