2010-12-16 10 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; 
     } 
    } 

    } 
} 

Лучший способ с родным File.Exists внутри метода 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 (File.Exists(path)) 
     { 
      return false; 
     } 
     else 
     { 
      File.Create(path); 
      return true; 
     } 
    } 
    } 
} 

Или, лучший и быстрый способ использует метод CheckFile на основной программе перед использованием метода CreateFile?

Это мое сомнение, извините, если я не могу это прояснить.

+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

Предполагая, что ваши методы нуждаются в дополнительной функциональности, и вы не приукрашивать ...

Я думаю, что вы просите ли дублировать функциональность одного метода в другой, к которому ответ нет.

«Использование метода CheckFile в главной программе перед использованием метода CreateFile» позволяет расширить ваш метод 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") 
Смежные вопросы