Currently I prefix all of them:
$wp_customize->add_panel('themename_panel', $args); $wp_customize->add_section('themename_section', $args); $wp_customize->add_setting('themename_setting', $args);
But I'm wondering is this necessary?
WordPress is a system that allows for many parts and custom configuration,
WP_Customize_Manager::add_setting() fits perfectly into that.
But you're not the only one trying to customize this specific WordPress instance, so are all the (activated) plugins and themes. To make sure, you don't overwrite another functionality and your own does not get overridden, prefixes are usually the way to go.
The mentioned function is a perfect example, as all it does do is
$this->settings[ $setting->id ] = $setting;
Now when Plugin A does
and theme B has this code
With which arguments is
Of course using prefixes doesn't really solve this problem. So I personally like to use classes and namespaces when possible, to make the chance of collisions even smaller. However, in this case it does not seem possible.
The convention is that you use a prefix that describes you (company name, nickname, ...) as to reduce the risk of someone choosing the same prefix as you