如果我有一个包含文件的完全限定名称的变量(例如,项目文件),应该调用它projectFile
,projectFileName
还是projectPath
?或者是其他东西?
9 回答
我通常会选择这些:
FileName
仅用于文件名(无路径)FilePath
仅用于父路径(没有文件名)FileFullName
对于带路径的完全限定名称
我不认为有这样一个公认的标准。我取决于您(团队)的偏好以及您是否需要在特定情况下区分这三者。
编辑:我对这些特定命名约定的想法是:
- 直观地说,“名称”是一个字符串,“路径”(和“文件名”)也是
- “名称”是相对的,除非它是“全名”
- 相关的变量名应该以相同的前缀(“File”+ ...)开头,我认为这提高了可读性
- concretions/properties 是右分支的:“File”->“FileName”
- 特化是左分支:“FileName”->“ProjectFileName”(或“ProjectFileFullName”)
- “文件”是表示物理对象的对象/句柄,因此“项目文件”不能是字符串
我不能总是坚持这些约定,但我会努力。如果我决定使用特定的命名模式,我会保持一致,即使这意味着我必须编写更具描述性(= 更长)的变量名称。代码的阅读次数多于编写次数,因此额外的少量输入不会让我感到太多困扰。
System.IO.Path 似乎将文件的完全限定名称称为path
,将文件本身的名称称为filename
,并将其包含目录称为directory
。如果您在 System.IO.Path 的上下文中使用,我建议在您的情况下projectPath
最符合此命名法。然后我将文件的名称称为fileName
并且它包含目录为parentDirectory
.
您应该在它可能包含的文件之后为其命名,即:
system_configuration_file_URI
user_input_file_URI
document_template_file_URI
“文件”或“文件名”在其他方面大多无用
此外,“文件”可能意味着“我是一个文件点”,这是不明确的,“文件名”没有说明它是否具有上下文(即:目录),fileURI 是上下文明确的,因为它说“这是一个资源标识符当观察到时,它指向一个资源(一个文件)“
我认为对此没有共识,只是尽量保持一致。
.NET Framework 中的示例:
FileStream(字符串路径...);
Assembly.LoadFrom(字符串程序集文件)
XmlDocument.Load(字符串文件名)
甚至文件名(文件名/文件名)的大小写在框架中也是不一致的,例如:
- FileInfo.CopyTo(string destFileName)
一些想法:
projectFile
可能不是一个字符串——它可能是一个代表文件解析内容的对象。projectFileName
可能不完全合格。如果文件实际上是"D:\Projects\MyFile.csproj"
,那么这可能会包含"MyFile.csproj"
.projectPath
可能被认为是文件的完全限定路径,或者可能被认为是包含文件的父文件夹的名称。projectFolder
可能被认为包含父文件夹的名称,或者它实际上可能是代码中某种Folder
抽象的实现。
.NET 有时用于path
引用文件,有时使用filename
.
请注意,“<a href="http://dictionary.reference.com/search?q=filename" rel="nofollow noreferrer">filename”是一个英文单词!标识符中间的“n”无需大写。
也就是说,我附加Filename
到所有包含文件名的字符串变量。但是,我尽量避免这种情况,而是在支持某种文件和目录的语言中使用强类型变量。毕竟,这就是可扩展类型系统的用途。
在强类型语言中,通常不需要描述性后缀(尤其是在函数参数中),因为变量类型和用法会推断其内容。
所有这些部分取决于方法的大小以及变量是否为类变量。
如果它们是类变量或在大型复杂方法中,则遵循 Kent Fredric 的建议,并为它们命名一个表明文件用途的名称,即“projectFileName”。
如果这是一个小型实用方法,例如删除文件,则不要将其命名为“projectFileName”。然后将其简称为“文件名”。
我永远不会将其命名为“路径”,因为这意味着它指的是它所在的文件夹。
如果没有其他变量,例如“fileID”或“filePtr” ,则将其称为“file”就可以了。
所以,我会使用“文件夹”或“路径”来识别文件所在的目录。
而“fileID”则代表一个文件对象。
最后,“文件名”是文件的实际名称。
快乐编码,
兰迪
基于上述选择的答案,它们的含义模棱两可,并且没有被广泛接受的名称,如果这是一个请求文件位置的 .NET 方法,那么在 XML 注释中指定您想要的内容,以及一个示例,如如果其他开发人员不确定您想要什么,他们可以参考。
这取决于您的环境中使用的命名约定,例如在 Python 中,答案是projectpath
由于os.path模块的命名约定。
>>> import os.path
>>> path = "/path/to/tmp.txt"
>>> os.path.abspath(path)
'c:\\path\\to\\tmp.txt'
>>> os.path.split(path)
('/path/to', 'tmp.txt')
>>> os.path.dirname(path)
'/path/to'
>>> os.path.basename(path)
'tmp.txt'
>>> os.path.splitext(_)
('tmp', '.txt')