Prima di tutto, vorrei sottolineare che la mia risposta è piuttosto soggettiva, basata esclusivamente sulla mia esperienza, non supportata da dati o risorse esterni.
Una convenzione è proprio questo: una convenzione. Non importa quale si usa, ma piuttosto quale è leggibile e comodo da digitare per te e per i programmatori che riescono a mantenere il codice con cui stai lavorando al momento.
Io uso CamelCase in C++ perché è visivamente più piacevole per il mio occhio e perché mi sono abituato. D'altra parte, utilizzo i caratteri di sottolineatura e i nomi di funzioni in lettere minuscole in C: è diventato una sorta di modo semplice per distinguere quale lingua è stata utilizzata per me.
Altri programmatori ti daranno sicuramente altri motivi, molti dei quali saranno più o meno soggettivi, veri per loro o per gli sviluppatori di cui sono membri.
Cerca in altre lingue. C# favorisce CamelCase, con la prima lettera maiuscola. Perché è meglio che lasciare il primo in minuscolo?
I programmatori PHP che utilizzano il framework Zend hanno familiarità con le convenzioni di denominazione Zend: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html.
Drupal API è anche PHP, ma utilizza caratteri di sottolineatura, lettere minuscole e prefissi di moduli/temi specifici.
Librerie, quadri e persino intere lingue possono avere convenzioni di denominazione che per qualche motivo sono favorite dai loro produttori. Ciò non ti costringe a smettere di usare la solita convenzione di denominazione :). Quindi, tutto sommato, penso che la risposta alla tua domanda possa essere messa in un modo così sciocco: solo perché: D. Perché i singoli programmatori si sentono a proprio agio con esso.
Per quanto riguarda la seconda domanda: no, non consiglierei di utilizzare alcuna convenzione rispetto a un'altra per qualsiasi progetto. Scegli cosa è meglio per te. L'unica situazione in cui non hai scelta è quando ti trovi in un team di sviluppo che per qualche ragione desidera attenersi a una singola convenzione (come un'API coerente).
Terza domanda: sì, è possibile visualizzarla in questo modo. Di solito mi prefisso le mie classi, quindi è ovvio che lo UmbraModule
o lo TCODConsole
facciano parte delle API Umbra o libtcod. Per quanto riguarda STL, preferisco non nominarlo. La prefissazione di tutto con std::*
è un'indicazione molto chiara del fatto che faccia parte di una libreria diversa o meno, quindi il codice infrastruttura/applicazione è chiaramente distinto - lasciando CamelCase vs. sottolinea una questione secondaria :).
Questa è un'altra domanda di stile .... –
Se un programmatore utilizza le convenzioni di denominazione stdlib e @andreas non lo vede, è successo? Sicuramente * sono * le persone che usano quelle convenzioni. –
I veri programmatori usano caratteri di sottolineatura! –