我是编程,学习自己的新手,昨天我正在开发一个使用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 :(得分: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")