1

ファイル オブジェクトを持つプログラミング言語では、このオブジェクトを関数に渡すか、物理ファイルへのパスを渡し、関数がファイル自体を開くようにしますか?

回答に言語が関係する場合は、c++ と python を検討してください。

ありがとう、

誰か

4

3 に答える 3

3

優れたコーディング慣行についての私の理解は、情報が使用されるファイルを開くことであり、どの言語でもよりグローバルな範囲ではありません。

于 2012-07-25T12:33:11.947 に答える
2

私は強い型付けが好きなので、ファイルパスオブジェクトをできるだけ渡すのは理にかなっています。Boostは、boost::filesystem::pathこの目的のためのクラスを提供します。

ただし、これは手間のかからないはずです。たとえば、からstringへの暗黙の変換を提供することにはおそらくほとんど害fileobjectがないので(逆ではありません!)、前者を受け入れる関数はパスを裸の文字列として受け入れます(そしてそれで正しいことをします)。

同様に、Pythonの一部の関数は、開かれたファイルオブジェクトを期待しますが、そのインスタンスを渡すstrと、それらは自分自身を呼び出すことによってそのようなオブジェクトを構築するだけopen(path, 'r')です。

ただし、ここでは区別することに注意してください

  • ファイルの入出力ストリームを表すオブジェクト– ifstream/ ofstreamC ++、filePython(これ渡さないでください)、および
  • ファイルシステム内のファイルのパスを表すオブジェクト。たとえば、これ渡しますboost::filesystem::path

比較のために、.NETにはFileInfoファイルシステムオブジェクトを表すためのクラスがありますが、.NETはそのクラスを使用しFileStreamて…まあ、ファイルストリームを表します。

于 2012-07-25T12:34:27.530 に答える
0

それは、特定のケースに大きく依存します。

ファイルを複数の (サブ) 関数で使用する場合は、初期化されたファイル オブジェクト (または関数) を渡します。

ファイル名とパスを取得する関数と、ファイルのデータを処理する別の関数がある場合、パスとファイル名を渡して、データを使用する関数でファイルを開くことをお勧めします。

于 2012-07-25T12:39:34.357 に答える