>>16
Why do you make a difference between variables, functions, classes and structs?
Because I am not the computer. I am the programmer. Yes, I can assign functions to variables, and to name a function pointer I would use shitCase; this reminds me of the fact that it's not a hardcoded function, but it's something that is modified during runtime.
I make a visible difference between these things for the same reason you format ANYTHING in your code. Why do you use whitespace? The computer doesn't care how your code is formatted... but you do. It helps you debug and maintain your code.
Even if your language allows you to do exotic things like change hardcoded classes or functions at runtime, you still should make a distinction between those you will change at runtime and those you won't.
If I used shitCase for applicable objects which I don't call "classes", I would have trouble telling whether lol is applicable or not.
The reason for this ambiguity is just because you use lower_case. lower_case and camelCase are mutually exclusive because of the ambiguity with single words.
lower_case fucking SUCKS. It's hard to type, hard to read, and generally makes code look shit ugly. Try using shitCase instead of lower_case.
Really, I wouldn't so much mind your naming scheme if you used shitCase wherever you currently use lower_case. As long as it's consistent and doesn't use fucking underscores (aside from #define and const of course, because underscores work quite well in ALL_CAPS).