I keep getting myself in knots when I am manipulating paths and file names because I don’t follow a naming standard for path components.
Consider the following toy problem (Windows example, but hopefully the answer should be platform independent). You have been given the path of a folder:
C:\Users\OddThinking\Documents\My Source\
You want to walk the folders underneath and compile all the .src files to .obj files.
At some point you are looking at the following path:
C:\Users\OddThinking\Documents\My Source\Widget\foo.src
How would you name the following path components?
A. foo
B. foo.src
C. src
D. .src
E. C:\Users\OddThinking\Documents\My Source\ (absolute path of the root)
F. Widget\foo.src (relative path of the file to absolute path of the root)
G. Widget\
H. C:\Users\OddThinking\Documents\My Source\Widget\
I. C:\Users\OddThinking\Documents\My Source\Widget\foo.src
Here is my attempt:
A. Base name? Basename?
B. File name? Filename?
The difference is important when choosing identifier names, and I am never consistent here.
C. Extension?
D. Extension? Wait, that is what I called C.
Should I avoid storing the dot, and just put it in when required?
What if there is no dot on a particular file?
E. ?
F. ?
G. Folder? But isn’t this a Windows-specific term?
H. Path name? Pathname? Path?
I. File name? Wait, that is what I called B.
Path name? Wait, that is what I called H.
I think your search for a "standard" naming convention will be in vain. Below are my proposals, based on existing, well-known programs.
A) C:\users\OddThinking\Documents\My Source\Widget\foo.src
---
Vim calls it file root (:help filename-modifiers)
B) C:\users\OddThinking\Documents\My Source\Widget\foo.src
-------
C) C:\users\OddThinking\Documents\My Source\Widget\foo.src
___ (without dot)
D) C:\users\OddThinking\Documents\My Source\Widget\foo.src
____ (with dot)
also file extension. Simply store without the dot, if there is no dot on a file, it has no extension
E) C:\users\OddThinking\Documents\My Source\Widget\foo.src
-----------------------------------------
top of the tree
No convention, git calls it base directory
F) C:\users\OddThinking\Documents\My Source\Widget\foo.src
--------------
path from top of the tree to the leaf
relative path
G) C:\users\OddThinking\Documents\My Source\Widget\foo.src
------
one node of the tree
no convention, maybe a simple directory
H) C:\users\OddThinking\Documents\My Source\Widget\foo.src
------------------------------------------------
I) C:\users\OddThinking\Documents\My Source\Widget\foo.src
-------------------------------------------------------