2010-12-16 12 views
1

私はプログラミングに慣れていなくて、勉強していましたが、昨日私はC#を使ってファイルを扱うクラスを開発していました。疑問がありました...チェックメソッドとcreatemethodがあるときにメソッドを使用する最良の方法は何ですか?クラス、メソッドを使用する最良の方法は何ですか?

ええ、私はここではっきりしていなかったので、ここに例があります。

Files.cs(クラス)

namespace Working_with_Files 
{ 
    class Files 
    { 

    public bool CheckFile(string path) 
    { 
     if (File.Exists(path)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    public bool CreateFile(string path) 
    { 
     if (CheckFile(path)) 
     { 
      return false; 
     } 
     else 
     { 
      File.Create(path); 
      return true; 
     } 
    } 

    } 
} 

このクラスのメソッドを使用するための最良かつ最速の方法は何ですか?私はCreateFileメソッドを使用するとき、私はすでに同じ名前のファイルがあるかどうかを確認する必要があります。

この方法の他の方法を参考にしてください。このような;

namespace Working_with_Files 
{ 
    class Files 
    { 

    public bool CheckFile(string path) 
    { 
     if (File.Exists(path)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    public bool CreateFile(string path) 
    { 
     if (CheckFile(path)) 
     { 
      return false; 
     } 
     else 
     { 
      File.Create(path); 
      return true; 
     } 
    } 

    } 
} 

最も良い方法は、CreateFileメソッド内のネイティブFile.Existsです。このような;

namespace Working_with_Files 
{ 
    class Files 
    { 

    public bool CheckFile(string path) 
    { 
     if (File.Exists(path)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    public bool CreateFile(string path) 
    { 
     if (File.Exists(path)) 
     { 
      return false; 
     } 
     else 
     { 
      File.Create(path); 
      return true; 
     } 
    } 
    } 
} 

また、CreateFileメソッドを使用する前に、メインプログラムでCheckFileメソッドを使用するのが最善の方法です。

これは私の疑いです。申し訳ありませんが、私はそれを明確にすることはできません。

+0

あなたは、CheckFileをラップする理由はありませんか? – DaVinci

+0

まず、静的メソッドでなければならないようです - 私はctorまたはインスタンス変数を参照していません... – RPM1984

答えて

2

時期尚早最適化を行わないでください!最初のものは「より明白」で、それは主観的な質問です。

関数の名前を変更してください:関数がCheckFileと呼ばれる場合、ファイル、コンテンツなどを「チェック」する必要があります。 「チェック」コードは、コードの複数の行がある場合

その後、私は、独自のメソッドに移動: - ファイルが存在するかどうかを確認していない>個人的に、私は次のように行いますFILEEXISTS

4

に名前を変更します。

また、行うことができます。CheckFileメソッド内

return File.Exists(path); 

しかし、パフォーマンス/速度に関しては、心配しないでください。必要に応じて多くのメソッドを記述すると、速度の差はごくわずかです。

私の意見では、コードの可読性は小さなパフォーマンス以上のものです。

1

最速の方法が必要な場合は、最初のケースでCreateFileメソッドのみを使用できると思います。これは、すぐに使用できるフレームワークFile.ExistsとFile.Createメソッドを使用するためです。そして、ほとんどの開発者がそうしているように、フレームワークや言語がすぐに使える機能を提供している場合は、それ以外のものを使用してください。

希望すると助かります!あなたの方法は、余分な機能を必要とし、あなたはユリを金メッキしていないと仮定すると、

1

...

は、私はあなたが答えはノーである別の内の1つのメソッドの機能を複製するかどうかを求めていると思います。

"CreateFileメソッドを使用する前にメインプログラムでCheckFileメソッドを使用する"を使用すると、CheckFileメソッドを拡張して、より優れたカプセル化であるCreateFileから機能を拡張することができます。 (あるいは、常にCreateFileを呼び出す場合は、CheckFileを呼び出す必要があります)

1

Filesクラスのインスタンスを作成する必要はありません。すべてのメソッドを既に提案したように静的にするか、このようなコードパターンを使用してくださいエレガント:

namespace Working_with_Files 
{ 
    public class Files 
    { 
     private static Files instance; 
     public static Files Instance { get { return instance; } } 

     static Files() 
     { 
      instance = new Files(); 
     } 

     private Files() 
     { 
     } 

     public bool CheckFile(string path) 
     ......no change in rest of code..... 
    } 
} 

とメソッドを呼び出すために:

Files.Instance.CheckFile("myfilehere") 
+0

これは質問に関連していないので、より多くのコメントと答えです。より一般的なヒント。 – RvdK

関連する問題