最近、就職の面接を受けました。実際のコードを書くのに1時間かかりました。それほど多くはなく、おそらく100行未満でした。約45分後、コンパイルして実行し、動作するようになりました。コンパイルエラーと2、3の小さなバグを解決するのに5〜10分かかったかもしれませんが、全体的に非常にスムーズでした。(ちなみに、私は彼らから申し出を受けました。)
しかし、私が戸惑ったのは、完成したコードを渡した後、インタビュアーが私が間違ったことは「進行中にコンパイルしない」ことだけだと言ったということでした。私は彼に違いは何であるかを尋ね、彼は「もしあなたがコードを完成させ、それが時間内にコンパイルしなかったらどうするだろう」と言った。
私の理解では、それは無効な引数です。なぜなら、特定の長さのコードに対して「コードをコンパイルする」には、通常、一定数のコンパイルエラーの修正が含まれ、かなり一定の時間がかかります。コードの記述を終了するか、コーディング時間をインターリーブする場合。どちらかといえば、欠落しているセミコロンを検索するためにコーディングを中断することは、おそらくあなたの効率に有害です。派生クラスの仮想関数などのエッジケースの周りの不明瞭さを実験している極端な状況を除いて、経験豊富な開発者によって書かれたコードは、時折の入力エラーを除いてコンパイルされることを期待するのが妥当と思われますそうでない場合、それは '
別の同様の事件では、インタビューで不完全なコードベースが与えられ、それを完成させ、それを実行するために必要な変更を加えるように頼まれました。最初に既存のコードを読んでから、数分後(コードを見終える前であっても)、インタビュアーはそれで十分だと言った。私が彼に何をしたか(すなわち、「私は何を間違えたのか」)と尋ねたとき、彼はすぐにコードをコンパイルすることから始めたと言った。
なぜそれが関連するのでしょうか?私の意見と私の経験では、コードの一部がコンパイルされるかどうかは本質的にランダムであり、セミコロンが欠落しているかどうかなどが含まれており、基礎となるプログラムの正確性とはほとんど関係ありません。(私にとって、コンパイルに焦点を当てることは、文法をチェックするために校正せずに記事をスペルチェックに通すようなものです。)
不完全なコードを教えてくれた場合、最初にすべきことはそれを読むことです。コードが何をしているのかがわかり、アルゴリズムが正しいことがわかるまで、コンパイルしようとはしません。
とにかく、これらは最近のいくつかの事件に過ぎませんが、一般的に、多くの開発者がコードの進行について話をしているのを聞いたことがあります。あなたがコードをテストする利点を理解していますが、なぜコンパイルするのですか?
だから私の質問はこれです:私が逃したものはありますか?実際にコンパイルする利点はありますか?または、これはソフトウェアコミュニティによって伝播された神話のようなもので、コードを頻繁にコンパイルする必要がありますか?