web-dev-qa-db-ja.com

コマンドラインフラグを使用して同じ実行可能ファイルに機能を配置しますか、それとも別の実行可能ファイルに配置しますか?

背景:ドメインロジックがライブラリとして存在するサービスに取り組んでおり、実際の実行可能ファイルは、ドメインロジックライブラリのラッパーとしてWebフレームワーク上に構築されています。 2人のお客様が同じバージョンのこのサービスを実行するという保証はありません。

タスク:ドメインロジックのサブコンポーネントを表すためのスキーマを出力する方法を作成するように依頼されました。

私の解決策:これをサービス実行可能ファイルのコマンドラインフラグとして実装しました。つまり合格した場合--dump-schema Xサービスを実行すると、Xの予想されるスキーマをダンプして、終了します。フラグを渡さない場合は、代わりに何も出力せず、通常どおりリクエストの受け入れを開始します。

Rationale:スキーマダンプの出力が、同じバイナリから実行されたときに実際のサービスが期待するものと同期していることを確認するために、この方法で実行しました。さらに、サービスへのリクエストが1回限りのコマンドライン呼び出しとして意味がある場合、それを許可することはめったに悪い考えではないというのが私の個人的な信念です。

レビューコメント:上級チームメンバーと話し合うとき、彼らは、コマンドラインフラグ全体が以前のやり方から一歩離れていると主張しました-結果として混乱するかもしれません。別の実行可能ファイルがあれば彼は好むdump_schemaコマンドを発行しました。

Counter-argument:引数を理解できます。彼らはMicrosoft/Windowsショップなので、CLIは彼らがコンピューターと自然に対話する方法ではありません。しかし、彼らはゆっくりとLinux/Unix環境に移行しているので、私の意見では、それは一種の論点です。

ためらい:しかし、考えてみると、どちらのアプローチ(CLIフラグまたは個別の実行可能ファイル)が望ましいかについて、強い議論はありません。 mainプロシージャの1つのマルチプレックスと、シェルのもう1つのマルチプレックスを除いて、それらはほぼ同じものになります。

では、天才が2つのアプローチを対比して比較できる可能性はありますか?それとも本当にウォッシュですか?

2
kqr

同期を維持する必要があるものを複製することを意味する場合は、個別の実行可能ファイルを使用しないでください。何かがそれにアクセスするために異なる「フロントエンド」を作成します。

コマンドラインオプションを含むWindowsショートカットを提供することで、この問題を正確に解決しました。

5
candied_orange