类,使用方法的最佳方法是什么?

时间:2010-12-16 10:48:15

标签: c# oop class methods

我是编程,学习自己的新手,昨天我正在开发一个使用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方法?

这是我的疑问,对不起,如果我不能说清楚。

5 个答案:

答案 0 :(得分:4)

就个人而言,我采取以下方式:

如果“检查”代码不止一行代码,那么我将其移动到自己的方法。

你也可以这样做:

return File.Exists(path);

在CheckFile方法中。

但是关于性能/速度,请不要担心。根据需要编写尽可能多的方法,速度差异很小。

在我看来,代码的可读性比微小的性能更重要。

答案 1 :(得分:2)

不要过早优化!第一个是“更清楚”,这是一个主观问题。

请重命名函数:如果函数名为CheckFile,则应“检查”文件,内容或其他内容。不检查文件是否存在 - >重命名为FileExists

答案 2 :(得分:1)

如果你想要最快的方式,那么我认为在第一种情况下你只能使用你的CreateFile方法。因为它使用了随时可用的框架File.Exists和File.Create方法。正如大多数开发人员所做的那样 - 如果框架或语言提供了即用型功能,那么如果不满足则使用它们,然后组合那些最多存在的功能。

希望它会有所帮助!

答案 3 :(得分:1)

假设你的方法需要额外的功能而且你没有给百合花烫金......

我认为你问是否要在另一个方法中复制一种方法的功能,答案是否定的。

“在使用CreateFile方法之前在主程序上使用CheckFile方法”允许您扩展CheckFile方法,而不会使其与CreateFile的功能分离,这是更好的封装。 (或者,如果总是需要,则使CreateFile调用CheckFile)

答案 4 :(得分: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")