In C ++, funzionalità come le eccezioni hanno un impatto sull'intero programma: puoi disabilitarle nell'intero programma oppure bisogno di trattare con loro in tutto il codice. Come famoso articolo sul rapporto C ++ lo mette:
Counter-intuitively, the hard part of coding exceptions is not the explicit throws and catches. The really hard part of using exceptions is to write all the intervening code in such a way that an arbitrary exception can propagate from its throw site to its handler, arriving safely and without damaging other parts of the program along the way.
Poiché anche new
genera eccezioni, ogni funzione deve fornire sicurezza delle eccezioni di base - a meno che non chiami solo funzioni che garantiscono il lancio di nessuna eccezione - a meno che non disabiliti tutte le eccezioni nell'intero progetto .
Quindi, le eccezioni sono una funzione "whole-program" o "whole-team", dal momento che devono essere capite da tutti in una squadra che li usa. Ma non tutte le funzionalità del C ++ sono così, per quanto ne so.
Un possibile esempio è che se non ottengo i template ma non li uso, sarò ancora in grado di scrivere C ++ corretto o non lo farò ?. Posso anche chiamare sort
su un array di interi e godermi il suo incredibile vantaggio di velocità. C's qsort
(perché non viene chiamato nessun puntatore a funzione), senza rischiare bug - o no? Sembra che i modelli non siano "tutto squadra".
Ci sono altre funzionalità del C ++ che influiscono sul codice non direttamente sul loro utilizzo e sono quindi "tutto squadra"? Sono particolarmente interessato a funzionalità non presenti in C.
Aggiornamento : sono particolarmente in cerca di funzionalità in cui non è presente alcun segno di linguaggio necessario per essere a conoscenza di esse. La prima risposta che ho citato è la correttezza, che è anche tutta la squadra, quindi tutti hanno bisogno di imparare a riguardo; tuttavia, AFAICS avrà un impatto solo se chiami una funzione contrassegnata come const
, e il compilatore ti impedirà di chiamarla su oggetti non-const, quindi ottieni qualcosa su google. Con le eccezioni, non lo ottieni nemmeno; inoltre, vengono sempre utilizzati non appena si utilizza new
, quindi le eccezioni sono più "insidiose". Dal momento che non riesco a esprimerlo in modo obiettivo, comunque, apprezzerò qualsiasi funzione dell'intero team.
Aggiornamento 2 : anziché la funzione C ++ avrei dovuto scrivere qualcosa come "C ++ - feature specifica", per escludere cose come il multithreading che si applicano a una grande quantità di linguaggi di programmazione tradizionali.
Appendice: perché questa domanda è obiettiva (se ti chiedi)
C ++ è un linguaggio complesso, quindi molti progetti o guide di codifica cercano di selezionare funzionalità "semplici" in C ++ e molte persone cercano di includerne o escluderne alcune in base a criteri prevalentemente soggettivi. Domande su questo vengono chiuse giustamente regolarmente qui su SO.
In alto, invece, ho definito (nel modo più preciso possibile) quale sia la caratteristica del linguaggio "tutto il team", forniamo un esempio (eccezioni), insieme a numerose prove a supporto nella letteratura sul C ++, e chiedo un'intera squadra funzionalità in C ++ oltre le eccezioni.
Se dovresti usare le caratteristiche di "tutto il team", o se questo è un concetto pertinente, potrebbe essere soggettivo, ma questo significa solo che l'importanza di questa domanda è soggettiva, come sempre.