2009-08-20 3 views
2

PathクラスのメンバーはPath.Combineのようにクラスに属します。彼らは素晴らしい、きれいな、正しいコードにつながります。残念ながら、C++プリプロセッサのヘッダーパスを管理するようなものに使用すると、プロファイラで期待以上に多くのヘッダが表示されていることをすぐに認識できます。どうして?`System.IO.Path`を具体的にするべきですか?

例外:ArgumentExceptionが:パス1またはパス2GetInvalidPathCharsで定義された無効な文字の一つ以上を含んでいます。

チェックがなくても、combineコマンドはO(n)です(文字列の内容をコピーする必要があるため)。しかし、これはGetInvalidPathChars '〜40人のメンバーの存在を確認するよりもずっと安価です。

Pathクラスは、無効な文字を含まない文字列を含む不変型である必要があります。 string(現在存在しています)で動作する静的メンバーと、Pathオブジェクトで動作するために追加された同一のセットを提供する必要があります。 .NET Frameworkでこの変更を作る:

  • が破壊変更ではありません
  • が大幅にいくつかのベスト・プラクティス・オペレーションのパフォーマンスを向上させ(密封されたコンクリートの型に静的クラスを変更すると、非破壊である)

意見ですか?

答えて

2

Uriクラスは、file://構文に気にしない限り、そのような機能を提供できます。私は.NETがUriクラスの使用を好んでいると思います。それはローカルファイル以外のリソースを探すことができるからです。これをサポートするにはプログラム側で余分な作業が必要です。

関連する問題