2010-12-16 138 views
1

我是新來的編程,學習我自己,昨天我正在開發一個類來處理使用C#的文件,並且我有疑問......當你有一個checkmethod和一個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 2010-12-16 10:56:34

+0

首先,看起來他們應該是靜態方法 - 我沒有看到ctor或實例變量... – RPM1984 2010-12-16 10:58:33

回答

2

不要做過早的優化!首先是'更清楚',這是一個主觀問題。

請重新命名函數:如果一個函數被稱爲CheckFile,它應該'檢查'文件,內容或其他東西。不檢查文件是否存在 - >重命名爲FILEEXISTS

4

就個人而言,我做了以下的方法:

如果「檢查」代碼的代碼多於一行然後我把它移動到它自己的方法。

你也可以這樣做:

return File.Exists(path); 

的CheckFile方法內。

但是關於性能/速度,別擔心。根據需要寫出儘可能多的方法,速度差異很小。

在我看來,代碼的可讀性比微小的表現更重要。

1

如果你想要最快的方式,那麼我認爲你可以在第一種情況下只使用你的CreateFile方法。因爲它使用準備好的框架File.Exists和File.Create方法。正如大多數開發人員所做的那樣 - 如果框架或語言提供了隨時可用的功能,那麼使用它們,否則如果不滿足,則結合最大存在的功能。

希望它會幫助!

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 2010-12-16 11:30:18

相關問題