获取唯一的临时文件名


在做代码审核的时候,发现有一同事写了这样的代码.出现这种代码只能说明工作压力山大, 都不思考了.

GetTempFileName 获取唯一的临时文件名 有意思的 程序员 程序设计

获取唯一的临时文件名GetTempFileName

不需要注释也能看明白,意思就是想获取一个唯一的临时文件,用了 Path.GetRandomFileName() 得到一个随机文件名,并且用 Path.GetTempPath() 得到临时文件夹.问题是他觉得这样不保险,于是就不停的尝试,如果文件存在的话,就试着下一个随机的文件名,直到不重复(或者最大尝试 100 次), 看到这里, 真是醉了.

另一个小问题就是,这个 while 还每次判断 文件名是否为空,这个只有在第一次判断的时候才为空,之后都不可能为空的,这样的代码质量真的很低.

C# (.NET) 里 Path.GetTempFileName() 创建一个临时文件,并返回这个文件名.创建文件名的好处是这样就能确定该文件是唯一的, 因为其它进程在执行这个函数的时候如果文件名存在,则会获取下一个临时文件名并创建.每次都能保证唯一,而不会出现多个进程获取得到同样的文件名.

该程序员想的是,获取一个文件名(并不着急创建),之后再创建,感觉就是脱裤子放屁,多此一举,因为获取临时文件名就是肯定要创建该文件的,不创建的话获取文件名干什么?

代码审核很重要,因为这段代码平常来说是不会出问题的,但是效率实在不敢恭唯.

实际上,上面的代码完全可以替换成下面的代码(不会创建文件名), 这样的结合会更加实用些 (而且更简便, 高效)

1
2
3
4
public static string GetTempFileName()
{
    return Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
}
public static string GetTempFileName()
{
    return Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
}

英文同步: https://helloacm.com/code-review-gettempfilename-in-c/

GD Star Rating
loading...
本文一共 493 个汉字, 你数一下对不对.
获取唯一的临时文件名. (AMP 移动加速版本)
上一篇: 如何定期清空 WordPress 的垃圾回收站?
下一篇: 使用 Google API 生成 QR 码

扫描二维码,分享本文到微信朋友圈
b451db0cfbec92cb5c90880467967c31 获取唯一的临时文件名 有意思的 程序员 程序设计

8 条评论

  1. 兔二爷 | 理性的感性生活

评论