知らんけど。

主にプログラミングについて書きます

Rust Tips : バイナリプロジェクトにおける責任の分離

以下の記事から引用&和訳したものです。 大事なので、なんども読みたいので、載せました。

doc.rust-lang.org

複数のタスクの責任をmain関数に割り当てるという組織上の問題は、多くのバイナリプロジェクトに共通しています。そのため、Rustコミュニティでは、バイナリプログラムのmainが大きくなり始めたときに、別々の関心事を分割するためのガイドラインとなるプロセスを開発しました。このプロセスは次のようなステップで構成されています。

  • プログラムをmain.rsとlib.rsに分割し、プログラムのロジックをlib.rsに移動します。
  • コマンドライン解析ロジックが小さいうちは、main.rs に残すことができます。
  • コマンドライン解析ロジックが複雑になり始めたら、それを main.rs から抽出して lib.rs に移動します。

この処理の後、main関数に残る責任は以下のように限定されるべきです。

  • コマンドライン解析ロジックを引数の値で呼び出すこと
  • その他の設定を行う
  • lib.rs内のrun関数の呼び出し
  • runがエラーを返した場合のエラー処理

このパターンは、懸念事項を分離するためのものです。main.rsはプログラムの実行を処理し、lib.rsは手元のタスクのすべてのロジックを処理します。main関数を直接テストすることはできませんが、この構造であればプログラムのすべてのロジックをlib.rsの関数に移してテストすることができます。main.rsに残る唯一のコードは、それを読むことでその正しさを検証できるほど小さくなります。