I have been a big UpperCamelCase or lowerCamelCase user since I have started writing code:
In our demoscene group we were using CamelCase, Maya Mel or commands are all in lowerCamelCase, all studios I have worked in were using a variant of CamelCase. I always preferred that naming convention to the Underscore one:
def myVeryCoolFunctionName: pass
It's maybe because my brain has the habit of processing it but I find easier to read CamelCase than Underscore naming convention, there is no visual break, just a continuous flow of words dancing front of me!
def my_very_cool_function_name: pass
Now after so many years programming I just came across a very annoying issue, it's actually not the first time but usually I lived with it. Let's say that you have a definition that converts some data to sRGB color space, you would write it this way in lowerCamelCase:
If you want to respect the naming convention you have to change the case of sRGB to Srgb. In those cases I often write the function name like that:
def convertDataToSrgb: pass
def convertDataTosRGB: pass
Neither version is sexy, although it's understandable without much problems. Now these days I'm working on a color science Python API and I faced some situations where using CamelCase can be even more confusing than the sRGB example above and even change the meaning of the definition.
def convertDataToSRGB: pass
I'm doing some basic colorspaces conversion like CIE XYZ to CIE xyY, etc... The problem is that in color science little y is very different from big Y ( http://dougkerr.net/Pumpkin/articles/CIE_XYZ.pdf ).
So when you write something like that:
Which Y are you talking about? A person with knowledge in the domain would guess that you want to convert from CIE XYZ to CIE xyY colorspace.
def xyzToXyy: pass
You could write it this way to help but it's not visually elegant:
Underscore naming convention really shine here and makes this beautifully unambiguous and clear:
def XYZToxyY: pass
If you have any thoughts on this, I would be keen on hearing them of course!
def XYZ_to_xyY: pass