ファイル オブジェクトを持つプログラミング言語では、このオブジェクトを関数に渡すか、物理ファイルへのパスを渡し、関数がファイル自体を開くようにしますか?
回答に言語が関係する場合は、c++ と python を検討してください。
ありがとう、
誰か
ファイル オブジェクトを持つプログラミング言語では、このオブジェクトを関数に渡すか、物理ファイルへのパスを渡し、関数がファイル自体を開くようにしますか?
回答に言語が関係する場合は、c++ と python を検討してください。
ありがとう、
誰か
優れたコーディング慣行についての私の理解は、情報が使用されるファイルを開くことであり、どの言語でもよりグローバルな範囲ではありません。
私は強い型付けが好きなので、ファイルパスオブジェクトをできるだけ渡すのは理にかなっています。Boostは、boost::filesystem::path
この目的のためのクラスを提供します。
ただし、これは手間のかからないはずです。たとえば、からstring
への暗黙の変換を提供することにはおそらくほとんど害fileobject
がないので(逆ではありません!)、前者を受け入れる関数はパスを裸の文字列として受け入れます(そしてそれで正しいことをします)。
同様に、Pythonの一部の関数は、開かれたファイルオブジェクトを期待しますが、そのインスタンスを渡すstr
と、それらは自分自身を呼び出すことによってそのようなオブジェクトを構築するだけopen(path, 'r')
です。
ただし、ここでは区別することに注意してください
ifstream
/ ofstream
C ++、file
Python(これを渡さないでください)、およびboost::filesystem::path
比較のために、.NETにはFileInfo
ファイルシステムオブジェクトを表すためのクラスがありますが、.NETはそのクラスを使用しFileStream
て…まあ、ファイルストリームを表します。
それは、特定のケースに大きく依存します。
ファイルを複数の (サブ) 関数で使用する場合は、初期化されたファイル オブジェクト (または関数) を渡します。
ファイル名とパスを取得する関数と、ファイルのデータを処理する別の関数がある場合、パスとファイル名を渡して、データを使用する関数でファイルを開くことをお勧めします。