In C ++, funzionalità come le eccezioni influiscono sull'intero programma: è possibile disabilitarle nell'intero programma o è necessario gestirle in tutto il codice. Come afferma un famoso articolo sul Rapporto C ++ :
Controintuitivamente, la parte difficile delle eccezioni di codifica non sono i tiri e le catture espliciti. La parte veramente difficile dell'uso delle eccezioni è scrivere tutto il codice che interviene in modo tale che un'eccezione arbitraria possa propagarsi dal suo sito di lancio al suo gestore, arrivando in modo sicuro e senza danneggiare altre parti del programma lungo il percorso.
Poiché anche new
genera eccezioni, ogni funzione deve fornire la sicurezza di base delle eccezioni , a meno che non chiami solo funzioni che garantiscano il lancio di alcuna eccezione, a meno che non si disabilitino del tutto le eccezioni nell'intero progetto .
Pertanto, le eccezioni sono una funzionalità "tutto il programma" o "tutto il team", poiché devono essere comprese da tutti in un team che le utilizza. Ma non tutte le funzionalità di C ++ sono così, per quanto ne so.
Un possibile esempio è che se non ottengo modelli ma non li utilizzo, sarò comunque in grado di scrivere C ++ corretto - o no? Posso persino chiamare sort
un array di numeri interi e godermi il suo incredibile vantaggio di velocità. C qsort
(perché non viene chiamato alcun puntatore a funzione), senza rischiare bug - o no? Sembra che i modelli non siano "tutto il team".
Esistono altre funzionalità C ++ che incidono sul codice che non le utilizza direttamente e che quindi sono "tutto il team"? Sono particolarmente interessato alle funzionalità non presenti in C.
Aggiornamento : cerco in particolare funzionalità in cui non vi è alcun segno imposto dalla lingua che è necessario conoscere. La prima risposta che ho menzionato è stata la correttezza costante, che è anche una squadra intera, quindi tutti devono conoscerla; tuttavia, AFAICS ti influenzerà solo se chiami una funzione contrassegnata const
e il compilatore ti impedirà di chiamarla su oggetti non cost, quindi ottieni qualcosa per Google. Con le eccezioni, non lo capisci nemmeno; inoltre, vengono sempre utilizzati non appena si utilizza new
, quindi le eccezioni sono più "insidiose". Dal momento che non posso esprimerlo in modo oggettivo, tuttavia, apprezzerò tutte le funzionalità di tutto il team.
Aggiornamento 2 : invece della funzione C ++ avrei dovuto scrivere qualcosa come "C ++ - caratteristica 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)
Il 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 escluderle secondo criteri prevalentemente soggettivi. Domande su questo vengono regolarmente chiuse regolarmente qui su SO.
Sopra, invece, ho definito (nel modo più preciso possibile) che cosa è una caratteristica del linguaggio "a tutto il team", fornisco un esempio (eccezioni), insieme ad ampie prove a sostegno nella letteratura su C ++, e chiedo caratteristiche a tutto il team in C ++ oltre le eccezioni.
Sia che tu debba usare le funzionalità di "tutto il team", sia che si tratti di un concetto rilevante, potrebbe essere soggettivo, ma ciò significa solo che l'importanza di questa domanda è soggettiva, come sempre.