• ベストアンサー

main関数を先頭に置くデメリット

C言語で、main関数を先頭に置き、他の関数はプロトタイプ宣言だけ済ませて mainの後に置くという書き方に何かデメリットはあるのでしょうか。 何かの書籍で、「mainは先頭に置く方が何かと良い」と書いてあったので気になっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

関数を先に書いてmainをあとにすると、 関数の変更があったら関数を書き換えればいいということですね。 では、main関数を先頭に置き、他の関数はプロトタイプ宣言だけ済ませてmainの後に置くとどうでしょう。 関数の変更は当然必要ですが、プロトタイプの変更を忘れずにすることが必須になりますよね。 そんなことは当然頭のなかに入れて変更作業は行いますが、 人間には悲しいかな、「うっかり」というのが頻発します。 出来ることなら変更仕様に載っている必要な変更部分のみの変更で済めばケアレスミスは減ります。 「mainは先頭に置く方が何かと良い」 というのは、人が見た時、関数からでは全体の処理の流れがわからないからです。 プログラムが実行される順にソースを追う場合、探しまわらなければならなくなるからです。

ppk37
質問者

お礼

ご回答ありがとうございます。 たしかに変更箇所が増えてケアレスミスを招きやすくなりますね。

その他の回答 (3)

回答No.4

お好きにどうぞ。 大きなプログラムを書くときは複数のファイルに分割しますから、 mainだけで一本のファイルにすれば前も後もありませんからね。

ppk37
質問者

お礼

ご回答ありがとうございます。 mainだけで一本のファイルにするのもいいですね。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.3

プロトタイプ宣言などというものを関数の実体と合わせて書き、メンテナンスの際に同期をとらなくてはいけないというデメリットが…… ……って、それデメリットですかねぇ? 確かに手間ですけど。 コンパイラの側としては、main の位置なんてどこにあってもかまいません。 むしろ、一番前に持ってくることで利益を得るのはプログラマの方です。 main を一番前に持ってくることで、最初から目を通すとまずプログラムの大まかな流れを理解し、そこでの細かな処理をそのあとで把握することができます。 自身が今読んでいるもの・箇所が全体的にどのような位置づけにあるのかを自覚していることはプログラムに限らず書物・文書すべてに当てはまります。 ためしに長めのプログラムの関数を main を一番最後にして並びかえて、先頭から読んでみてください。 main が最後にあるということを知らなければ非常に読みにくくなり、また、関数一覧をまとめたくなることになるでしょう。

ppk37
質問者

お礼

ご回答ありがとうございます。 たしかに全体をまず把握したい気持ちはありますね。

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

意味を取り違えてるかもしれませんが 関数からコールされる段階で肩などを明確にするためのプロトタイプ宣言なので main関数の記載後にプロトタイプ宣言してるなら意味ありません

ppk37
質問者

お礼

ご回答ありがとうございます。 こちらの説明が下手ですみません。 プロトタイプ宣言はmainの前で行っている前提での質問でした。