2017-08-06 17 views
1

私の教授が正しく覚えていれば、関数への引数としてファイルポインタを渡すことは、プログラミングの面で悪いことであると言われました。ファイルのポインタと関数

なぜ誰かが説明できますか?

編集:申し訳ありませんが、私はここでいくつかの種類の聖戦を引き起こしたが、少なくとも少しは明確にするために、教授はCと入門プログラミングクラスを教えていると述べました。彼は、 "大きなプログラム"誰(どの機能)がファイルを閉じるのかを知らない。

数ヶ月前に私は学ぶ意欲があまりありませんでしたが、今は私が頭の中に突っ込んだのです。

+2

悪い習慣は、通常、主観的な意見です。私はこれのような懸念事項は、SOの話題とはみなされていません。 –

+0

彼は 'fgets'を使わないのはなぜですか? – BLUEPIXY

+3

ファイルポインタを関数に渡すことは何も問題ありません。たぶん、教授はより具体的な状況について話していたかもしれない。 – interjay

答えて

-1

ファイルポインタを関数に渡すこと自体は悪い習慣ではありません。この質問に文脈を追加すれば、悪い習慣になるかもしれません。たとえば、ファイルポインターをUI機能に渡すことはお勧めできませんが、問題はファイルポインターが悪いということではありませんが、UIからロジックを分離することは良いことです。

さらに、私たちがそれをさらに考えると、関数はファイルのように、削除するようなことをするかもしれません。その場合、ファイルポインタを関数に渡すことは、すべてが適切であることを確認することなく実行することはお勧めできません。関数はすべての一般的な問題のシナリオを処理し、それを呼び出す場所は特定の問題のシナリオを処理する必要があります。

+1

あなたの意見は答えではありません。はい、彼らがやるべきことをする機能をバグなしで書くのは良い習慣です。 –

+1

@PeterJ私は、それ以外の点で証明されるまで、関数ポインタをパラメータとして渡すことに間違いはないと確信しています。また、ファイルポインタは一般にUI関数に渡すべきではありません。私はあなたが真剣に取り組むことができ、違う意見を持つ人を見つけることは疑う。これらは一般的なプラクティスです。はい、私は間違っているかもしれませんが、私の声明が十分に確立されているので、少なくとも別の方向を指す良い議論をいくつか見てみたいと思います。あなたに何かがある場合。 –

+0

CのUI機能とは何ですか?スタンダードは言及していない。多分あなたの要求を書いてください。 –

0

ファイルポインタを渡すのがベストプラクティスだと思うので、標準ビルドイン関数でさえいくつかのファイルポインタ(ex fprintf n fscanf)を渡すことがあります。一方、ファイルポインタを渡さない場合は、ファイルパスを渡すか、グローバルファイルポインタを作成する必要があります。最初のケースでは、関数呼び出し時にファイルを再オープンする時間を失います(私が何かを見逃していたかどうかを教えてください)。注意を払わないグローバルポインタを作成した場合、グローバルfpがオープンされていないときに簡単に呼び出すことができます。長い答えと(うまくいけば)文法のエラーに申し訳ありません