反模式,重构c#代码示例
本文关键字:代码 重构 模式 | 更新日期: 2023-09-27 18:10:32
我写了代码,但它看起来不是很优雅和直观。我现在试着重构它。您在我的代码中看到任何反模式了吗?
我正在处理图像。我从文件夹中得到图像,处理后删除。
Console.WriteLine("Press ESC to exit");
bool isEmptyFolderFlagSet = false;
while (true)
{
if (Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)
{
appExited(null, EventArgs.Empty);
return;
}
List<string> images = new List<string>(System.Linq.Enumerable.Concat
(System.IO.Directory.GetFiles(sourcePath, "*.pdf"), System.IO.Directory.GetFiles(sourcePath, "*.tif")));
if (images.Count == 0 && !isEmptyFolderFlagSet)
{
Console.WriteLine("Waiting for image...");
isEmptyFolderFlagSet = true;
}
else
{
isEmptyFolderFlagSet = false;
foreach (string imagePath in images)
{
try
{
processing.ProcessingFile(imagePath);
System.IO.File.Delete(imagePath);
}
catch (System.IO.FileNotFoundException ex)
{
Console.WriteLine(ex.Message);
}
}
}
Thread.Sleep(500);
}
-
在'while'子句中放置一个条件
Console.WriteLine("Press ESC to exit"); while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)) { //Code here }
-
如果有很多文件?你应该使用EnumerateFiles而不是GetFiles(会更快)
-
你可以使用System.IO.File.Exits(filename)方法,而不是昂贵的try. catch只捕获FileNotFound。
-
如前所述,带回调函数的Timer(可能是匿名的)会更合适。