メイン関数を独自のファイルに分けておくことをお勧めしますか?


14

他のすべての機能をインターフェースできるように、main関数のみを持ち、他の関数を持たないmain.cファイルを持つことは良い習慣ですか?

決定的なルールがない場合、そうすることとそうでないことはいつ良いですか?

回答:


15

理想的には、再利用可能なコードの一部と考えることができるすべての作業は、libraryの形式で作成する必要があります。バランス作業は、どこmain()に常駐するかを別にすべきアプリケーションです。

しかし、main()単独で孤立する必要はありません。のような機能parse_arguments(argc,argv) は、分離するのではなく、mainと一緒にすべきです。


7

コーディング標準では、main()がmain.cにある必要があります。main.cの他のメソッドは、メインの高レベルエラーハンドラーおよびヘルパー関数である傾向があります(@Dipan answer "parse_arguments"および "display_help"などを参照してください)。

良いルールは、関数が実行中のアプリケーションをサポートし、ビジネスロジックを実行する以上のことを始めたとき、それはmain.cから抜け出したときです


4

経験則には次の2つがあります。

  1. 読者は、main()をどこに隠したのかと考える必要はないはずです。
  2. main()には無関係なクラッターを含めるべきではありません。

main()を常にmain.cというファイルに配置する必要があることを示すコーディング標準を実装することは、適切で一般的な方法です。このファイルとmain()自体には、不要な混乱が含まれていてはなりません。

理想的には、main()およびmain.cには以下のみを含める必要があります

  • プログラム全体のヘッダーファイルが含まれています。
  • argv、argcの引数解析コード。
  • ホストレスシステム:重要なレジスタ設定、スタックポインタ設定など。ただし、main()がプログラムのエントリの最初のポイントである場合のみ。
  • OSを起動するための呼び出し、プログラムのステートマシンを呼び出すループ、またはホストされたデスクトップシステムでのメインGUIスレッドに関連するウィンドウの作成と初期化。
  • 上記のいずれかを処理する、main()から呼び出される内部(静的)関数。
  • ホストされたシステムの場合:0を返します。

1

分離されたファイル内のクリーンなエントリポイントにより、コードフローが容易に理解および維持されます。私はこれまで、プログラムのステップをトレースできる場所とは異なるファイルに非常に小さく簡潔なmain()関数を保持するという習慣を常に持ってきました。清潔さのために、それを分離しておくのは良いことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.