Edit: Thank you guys for your insightful answers!
I use command line a lot. I hate needing to add backslashes before spaces or put quotes around file names. It’s easier to just use underscores.
Spaces are not the end of the world, but very annoying:
On a bash command line, they make it harder to handle a list of files returned by a command as argument to another.
On the command line (lin or win), they require escaping or quoting when used as arguments or script/executable names.
On many programs, if you cut&paste the complete path to the file (for example in a network drive), you can click on the path and it will access the file, but spaces in filenames or directories breaks that (and it’s not bad programming, the program simply can’t guess where the link ends).
When you mention the name of the file in a documentation or message, it may lead to misintepretation, and it’s just fugly:
“You can find more information in the attached document file.pdf”.
What is the name of the file? it can be “the attached document file.pdf”, “attached document file.pdf”, “document file.pdf” or “file.pdf”.
Also when mentioned in a text, the file name may end up split in separated lines or even pages, and will more likely be subject to autocorrect.
When copying the file name in a text, in most environments you can double-click to select the whole name, but it doesn’t work if it has spaces.
Now, if you never ever type or copy/paste a file name, and only ever access files through a graphical interface, then it makes no difference.
But then you start getting to comfy and if anything goes, why not non-ascii chars too? And that opens a different can of troubles.
Instead of spaces? Not necessarily but it helps prevent edge cases
Also, hasn’t been said yet, but when a file name with a space is uploaded to the net, the url will replace spaces with “%20” (for technical reasons), making the URL looking bad
(but still not mandatory to replace spaces by underscodes)
Example: http://example.com/the%20file%2042.png
vs http://example.com/the_file_42.png
WelcomeToCamelCaseMyFriend.png
ThatIsPascalCase thisIsCamelCase
But then you have to press shift if you want to use the file in Linux terminal…
…But at least it saves you from having to use quotes or escaping out the spaces with \