Trasmissione testuale di CppCast 285:Clang Power Tools e miti C++

Trasmissione testuale di CppCast 285:Clang Power Tools e miti C++

L'episodio 285 CppCast è stato registrato il 3 febbraio 2020. Gli host Rob Irving e Jason Turner sono raggiunti da Victor Ciura. Per prima cosa parlano di diversi modi per filtrare un contenitore C++ e un post sul blog di Visual C++ dal team di sviluppo di Diablo 4. Quindi parlano con Victor del plug-in Clang Power Tools per Visual Studio che è stato recentemente reso gratuito sia per l'open source che per l'uso commerciale. Parlano anche di miti C++.

Questo episodio di CppCast è sponsorizzato da Visual Assist, le note estensioni di produttività per Visual Studio. Visual Assist accelera lo sviluppo con funzionalità come navigazione intelligente, ispezione del codice e suggerimenti, potenti comandi di refactoring e molto altro ancora, persino il controllo ortografico nei commenti. Inizia la tua prova gratuita su wholetomato.com.

Introduzione

Benvenuti all'episodio 285 di CppCast. Ad unirsi a noi oggi è Victor Ciura. Victor è Principal Engineer presso CAPHYON, Technical Lead nel team Advanced Installer e Microsoft MVP. È ospite regolare del Dipartimento di Informatica della sua alma mater, l'Università di Craiova, dove tiene lezioni e seminari agli studenti sull'uso degli algoritmi C++ STL.

Dal 2005 progetta, implementa diversi componenti core e librerie di Advanced Installer. Attualmente trascorre la maggior parte del suo tempo lavorando con il suo team per migliorare ed estendere le tecnologie di riconfezionamento e virtualizzazione nell'IDE di Advanced Installer, aiutando i clienti a migrare le loro tradizionali app desktop nel moderno formato delle applicazioni Windows:MSIX.

Uno dei suoi hobby è riordinare e modernizzare la vecchia base di codice di Advanced Installer ed è noto per creare strumenti che aiutano questo processo, inclusi Clang Power Tools. Victor, bentornato allo spettacolo.

Victor Ciura: Ciao, grazie per avermi riaccompagnato. È bello tornare dopo quasi tre anni ormai.

12 modi diversi per filtrare i contenitori in Modern C++

Rob: Victor, abbiamo un paio di articoli di cui discutere, sentiti libero di commentare uno qualsiasi di questi. Quindi inizieremo a parlare dei miti del C++ e anche di Clang Power Tools. Suona bene?

Victor Ciura: Fantastico.

Rob: Il primo che abbiamo è un post sulle storie di C++ e questo è 12 modi diversi per filtrare i contenitori nel C++ moderno. Ho pensato che questo fosse un buon post, un po' per mostrare quanto può sembrare più semplice parte di questo codice di filtraggio, se sei in grado di utilizzare intervalli o concetti C++ 20.

Victor Ciura: Mi è piaciuto questo articolo di Bartek. Ma stavo scorrendo l'evoluzione del meccanismo di filtraggio presentato lì e stavo arrivando fino alla fine, dove è entrato negli algoritmi paralleli, ed è stato come un cliffhanger. Questo è un pezzo interessante su cui seguiranno. Ha promesso un post di follow-up su questo. Non vedo l'ora di vederlo.

Rob: E questo esempio di fare un filtro per copiare da un contenitore all'altro, usando un algoritmo parallelo, sono abbastanza sicuro che l'unica cosa che puoi parallelizzare lì è la copia effettiva dell'oggetto.

Victor Ciura: Puoi dividere il lavoro se stai solo parlando di filtraggio qui e puoi anche fare blocchi e filtrare in modo indipendente.

Rob: Ma poi dovresti creare...

Victor Ciura: ...la versione unita, sì.

Rob: E poi uniscili.

Victor Ciura: Ma in uno stile più funzionale:restituire una copia che contiene gli elementi filtrati. L'idea di questo articolo era sfruttare più composizione e farlo in modo più funzionale. Vedo la sua angolazione qui.

Libreria More_concepts

Rob: La prossima cosa che abbiamo è una libreria GitHub, e questa è More_concepts. Jason, raccontacelo.

Giacomo: È solo una libreria di concetti per C++ 20. La maggior parte di essi riguarda contenitori, contenitori ad accesso casuale, contenitori di dimensioni, contenitori cancellabili. Potrebbe essere utile. Mi piace solo vedere le persone che iniziano ad adottare materiale C++ 20, personalmente.

Rob: Non mi ero reso conto che questo tipo di concetti basati su container mancasse tra quelli integrati che otteniamo dall'STL.

Giacomo: Non stiamo ottenendo molti concetti dall'STL C++ 20, giusto, relativamente parlando.

Victor Ciura: Anche in un articolo di Bartek, ha giocato con il concetto di avere un push_back sul contenitore. Si stanno legando bene. Sono diviso riguardo a questo tipo di approccio nel fornire una pletora di concetti supplementari per STL.

Se ricordo che Bartek era preoccupato per le persone che inventavano concetti a destra ea manca solo per coprire e fornire controlli del livello API più belli e messaggi di errore più belli.

Giacomo: E ho il problema del compilatore su cui devo lavorare. Non ha ancora un buon supporto per i concetti. Non posso ancora applicare i concetti al mio lavoro nel mondo reale.

Victor Ciura: Neanche io. Solo esperimenti.

Blizzard Diablo IV esegue il debug dei core dump di Linux da Visual Studio

Rob: L'ultima cosa che abbiamo è un post dal blog di Microsoft Visual C++ e questo è "Blizzard Diablo IV esegue il debug dei core dump di Linux da Visual Studio".

È incredibile che tu sia in grado di farlo ora in Visual Studio. Se non sei abituato a immergerti in un ambiente Linux e a usare GDB per eseguire il debug di un core dump, perché esegui la maggior parte dello sviluppo in Visual Studio, come dice il team Blizzard, allora puoi farlo in Visual Studio sarà un enorme risparmio di tempo ed è di questo che tratta questo articolo.

Volevo sottolineare che l'articolo menziona Parallel Stacks, e questo è qualcosa che ho scoperto solo su me stesso, tipo un anno o due fa. E qualsiasi utente di Visual Studio che non conosce Parallel Stacks dovrebbe andare a dare un'occhiata. Ogni volta che fai un Interrompi tutto oppure stai eseguendo il debug di qualcosa come un core dump, puoi guardare il tuo elenco di thread, un elenco testuale e provare a scegliere lo stack di chiamate corretto in cui qualcosa potrebbe essere andato storto. Ma l'alternativa è usare Parallel Stacks, che ti dà una specie di vista grafica di tutti i tuoi thread e dello stack di chiamate di ciascuno. La cosa bella che puoi fare con questo:ignora tutti i grafici più piccoli, perché stanno solo aspettando lavoro. Cerca i grandi grafici dello stack di chiamate perché è lì che probabilmente qualcosa sta andando storto.

Victor Ciura: La vista predefinita è una casella combinata molto sottile, solo il nome del punto di ingresso. È una funzionalità vecchia, ma meno conosciuta.

Rob: C'è qualcos'altro che volevi sottolineare con questo articolo?

Victor Ciura: In una nota correlata di funzionalità di Vision Studio meno conosciute, ma meno recenti, stavo per dire che pochissime persone sanno che è possibile personalizzare l'esperienza del debugger in Vision Studio e definire con l'aiuto di alcuni file XML e schemi predefiniti. Puoi definire il layout dei tuoi oggetti personalizzati e come vuoi che vengano visualizzati nel debugger quando raggiungi il punto di interruzione, cosa esattamente dall'interno della tua complicata struttura di dati, come esattamente vuoi presentarlo facilmente nel debugger visualizzare nella finestra di controllo o qualcosa del genere. Il team di Visual Studio lo ha fatto per i tipi STL. E puoi fare la stessa cosa per i tuoi tipi. Bartek ha un tutorial molto carino. Pochissime persone conoscono questa funzione.

Rob: Penso che l'abbiamo menzionato prima, ma metterò un link nelle note dello spettacolo.

Passaggi successivi per Clang Power Tools

Rob: Bene, Victor, possiamo iniziare con l'aggiornamento su Clang Power Tools visto che è per questo che ti abbiamo avuto l'ultima volta nello show?

Victor Ciura: Nel 2017 ero entusiasta di venire su CppCast e parlare dei nuovissimi Clang Power Tools. Abbiamo lavorato duramente per aggiungere tonnellate di funzionalità e funzionalità alla suite di strumenti e nel 2019 abbiamo deciso di lavorare a tempo pieno su questo perché è iniziato come un tipo di cosa da "hobbisti" aperti che abbiamo sviluppato per consumare e sfruttare internamente . Ben presto ha guadagnato molto successo nella comunità e le persone hanno iniziato a proporre idee, segnalazioni di bug, suggerimenti e feedback, alcune patch. Ma abbiamo fatto la maggior parte del lavoro da soli. Siamo stati vittime del nostro stesso successo e siamo stati sopraffatti dal lavoro che dovevamo fare. Nel 2019 abbiamo assunto un team a tempo pieno per lavorare su questo e da allora abbiamo lavorato per mantenere quelle promesse e tutti quei suggerimenti, richieste di funzionalità e rapporti.

Abbiamo annunciato uno strumento autonomo separato per Clang Format Editor e Clang Format Configuration. Così tante persone hanno difficoltà a capire il formato Clang o la suite di impostazioni per abbinare la loro base di codice. Di recente abbiamo distribuito questo aggiornamento separato che non è legato a Visual Studio, quindi può essere usato in modo indipendente.

Il cambiamento più grande:ora è completamente gratuito. Ci auguriamo che questo riporti più persone a utilizzare lo strumento sia al lavoro che in progetti di hobby personali. Possono sfruttare la potenza del framework LLVM e la potenza di Clang-Tidy e trovare elementi nella base di codice, senza preoccuparsi degli strumenti e dell'infrastruttura e preoccupandosi solo di correggere i bug e i problemi che trovano nella loro base di codice.

Rob: Hai ancora un team a tempo pieno dedicato al lavoro?

Victor Ciura: Lo facciamo, perché stiamo usando lo strumento internamente. Continueremo a spingere e fare le cose arretrate che abbiamo e a migliorarle. La vittoria più grande di questa esperienza dal 2017 ad oggi:abbiamo sensibilizzato la comunità degli sviluppatori Windows che non erano abituati a sfruttare questo tipo di strumenti come gli strumenti Clang LLVM in generale e Clang-Tidy. Queste cose sono diventate mainstream anche per gli sviluppatori Windows.

Le ultime versioni di Visual Studio sono dotate di Clang Format e un buon supporto per Clang-Tidy. E non è alla pari con quello che puoi trovare in Clang Power Tools in termini di personalizzazione e cosa puoi fare nei flussi di lavoro e nell'automazione. Ciò ha alzato il livello per tutti gli utenti di Visual Studio indipendentemente dal fatto che utilizzino Visual Studio barebone o sfruttino Clang Power Tools. Ora abbiamo AddressSanitizers in Visual Studio, a partire da VS 16.7. Abbiamo anche il supporto per 64 bit.

Giacomo: Tuttavia, quali funzionalità offre Clang Power Tools lo distingue dalle funzionalità Clang-Format e Clang-Tidy integrate in Visual Studio ora?

Victor Ciura: I flussi di lavoro, la facilità d'uso e la facilità di configurazione. Non è necessario giocherellare manualmente con i file di configurazione e conoscere a memoria tutti i flag. Fa tutto dietro le quinte e su quella cosa hai un'interfaccia utente molto semplice e intuitiva. E nella seconda parte, aiutare con l'automazione e gli sforzi di integrazione continua.

Rob: Voglio interrompere la discussione solo per un momento per portare una parola dal nostro sponsor, Visual Assist. Visual Assist è utilizzato da sviluppatori C++ seri in tutto il mondo. Ha una grande cogenerazione. Hai bisogno di implementare metodi da un'interfaccia? Che ne dici di trasformare un puntatore in un puntatore intelligente?

Anche un puntatore intelligente di Unreal Engine. Aggiungendo un simbolo, hai digitato, ma non hai dichiarato? Visual Assist farà questo e molto altro. Inoltre refactoring:più potenti di quelli inclusi in Visual C++. O rilevare errori nel codice e suggerire correzioni utili. O la navigazione, che ti aiuta a spostarti ovunque nel tuo codice e ad aprire o individuare ciò di cui hai bisogno. O anche le estensioni di debug.

Visual Assist è scritto da sviluppatori C++ per sviluppatori C++, include tutto ciò di cui hai bisogno e niente che non lo sia. Ha una filosofia dell'interfaccia utente bassa. Non prenderà il controllo del tuo IDE ma apparirà quando sarà utile. È lì per aiutare, non per farsi pubblicità. Visual Assist si basa sugli sviluppatori che creano software che hai utilizzato, che si tratti di suite per ufficio, sistemi operativi o giochi, il software che usi è stato creato con Visual Assist.

Ottieni gli stessi strumenti per il tuo sviluppo. Visual Assist supporta Unreal Engine 4 e molte versioni di Visual Studio, inclusi VS 2019 e Community. Scaricalo su wholetomato.com.

Mito C++ sfatato con Victor e Jason

Rob: So che Jason e tu, Victor, avete recentemente fatto uno streaming insieme. Vuoi parlarci un po' dei miti del C++?

Victor Ciura: Ho avuto questa idea qualche settimana fa e Jason ha pensato che fosse un'idea interessante. Abbiamo fatto un brainstorming offline su alcuni elementi. È ispirato da cose che ho sentito, discussioni che ho visto, domande di studenti e stagisti e personale per lo più controverso che vedi nelle revisioni del codice e cose che non sono sempre chiare.

Ci sono casi discutibili. Abbiamo cercato di affrontare un po' di tutto, abbiamo fatto alcune cose ovvie, almeno per uno sviluppatore C++ esperto. C'è stata molta improvvisazione lì e abbiamo cercato di coinvolgere il pubblico e abbiamo avuto un bel po' di persone online con noi e ci siamo impegnati durante la chat del live streaming di YouTube, abbiamo avuto molti suggerimenti lì. Ci siamo prefissati di essere molto flessibili e di lasciar andare la discussione in entrambi i modi. E il feedback è stato positivo.

Rob: È sul tuo canale YouTube ora, vero Jason?

Giacomo: È sul mio canale.

Victor Ciura: Abbiamo trattato diverse cose:lo strano schema di spostamento standard (come spostare la stessa cosa due volte in una chiamata di funzione), l'inizializzazione uniforme e alcune delle parti più brutte di ciò, passare per valore per argomenti di sincronizzazione. Abbiamo discusso l'elaborazione di stringhe arrotolate a mano rispetto a regex standard, elementi opzionali standard e wrapping nel concatenamento opzionale e opzionale, l'interfaccia Monadic per problemi di prestazioni opzionali in tutto il codice, che derivano dall'utilizzo di optional. Di cos'altro abbiamo parlato?

Giacomo: Vuoi sceglierne uno o due, forse alcuni dei miti più comuni di cui hai sentito parlare dagli altri sviluppatori del tuo team? Alcuni di quelli di cui non hai parlato.

Victor Ciura: Cerco di mettere insieme cose che erano in qualche modo correlate. Proprio oggi abbiamo discusso nella revisione del codice sui potenti involucri dei tipi. Non so se le persone hanno familiarità con il concetto. Jonathan Boccara ha avuto una bella serie di post sul blog; ha una libreria chiamata NamedType per avvolgere materiale in wrapper potenti per una chiamata di funzione più sicura e sovraccarichi più sicuri. E il forum BYOND ha una solida libreria di tipi, entrambi sono open source.

Abbiamo discusso di alcune situazioni complicate in cui è stato selezionato l'overload sbagliato, è stato aggiunto un nuovo overload ai set di overload e in alcuni codici esistenti, l'overload errato è stato selezionato per errore e ha causato il bug. Abbiamo parlato di come avremmo potuto evitarlo, tornando indietro e riprogettando l'API e pensando a varie cose nodose. Naturalmente, erano coinvolti i valori predefiniti degli argomenti delle funzioni. Voglio discutere della creazione di involucri di tipi potenti anche per gli argomenti delle funzioni.

Giacomo: Mi sento come se fosse qualcosa che tutti o molte persone hanno reinventato molte volte. Forse è giunto il momento per noi di ottenere un modo standardizzato per eseguire definizioni di tipo forti. L'ho già menzionato su Twitter. La prima volta che è venuto fuori è stato nel 1997 o qualcosa del genere nello Standards Committee. E nessuno può essere d'accordo su cosa sarebbe un forte typedef. Quindi, viene costantemente escluso dalla considerazione.

Victor Ciura: E quante funzionalità offrire, perché puoi fare un wrapper molto complicato e aggiungere tutti i fischietti lì per soddisfare varie esigenze e vari scenari.

Giacomo: Qual è stata la conclusione nel tuo codice? Hai cambiato l'API in modo che non fosse un problema?

Victor Ciura: Nel nostro caso, è stato un brutto mix. E una cosa che avevo già nell'elenco era la conversione del costruttore che non era esplicito e alcuni overload che avevano valori predefiniti per alcuni degli argomenti. Abbiamo corretto l'API e eliminato il problema, ma tornando indietro, se avessimo avuto tipi di vocabolario adeguati per quegli argomenti, i problemi avrebbero potuto essere evitati.

Rob: Dal momento che è un argomento che solleviamo sempre comunque, come ti sentiresti, diciamo, il prossimo rilascio di Visual Studio o il prossimo rilascio del 2021 o qualsiasi altra cosa, interrompe semplicemente tutto l'ABI e devi ricompilare tutte le cose e puoi non riutilizzare la tua libreria esistente. C'è un problema per te?

Victor Ciura: Sono d'accordo - campo "rompi tutto".

Giacomo: Ti affidi a BLOB binari di fornitori di terze parti che hanno cessato l'attività 15 anni fa.

Victor Ciura: Abbiamo un insieme molto limitato di librerie che consumiamo in formato binario, ma quei fornitori ci stanno ancora lavorando. Mi fido di loro per l'aggiornamento.

Rob: Mi piace come le ultime tre versioni siano state compatibili con ABI tra loro 2015, 2017 e 2019, ma mi va bene romperlo e forse le due o tre successive possono essere compatibili tra loro.

Victor Ciura: Sì, è ora di interrompere il rilascio, finora sono stati piuttosto bravi.

Rob: Prima del 2015, correggimi se sbaglio, ogni versione rappresentava un'importante modifica ABI.

Giacomo: Quello era il mondo in cui vivevamo. Non abbiamo mai pensato di poter utilizzare le librerie di un compilatore precedente.

Victor Ciura: Era un periodo più semplice. Le persone non facevano supposizioni. Hanno programmato sulla difensiva, hanno chiesto il codice sorgente.

Giacomo: D'altra parte, hai gli standard di codifica C++ di Sutter e Alexandrescu, che sono dei primi anni 2000? Dove effettivamente dicono "non hai tipi C++ sui confini della tua libreria... "

Rob: E usa esterno "C" ovunque o...?

Giacomo: E usa i tipi "cosa vedi", non passare una stringa oltre i limiti della libreria. E quando l'ho letto, sono tipo, ok, questa è una regola che non seguirò perché per me questo ha appena rotto il punto di C++. Se non posso avere una libreria che usa stringhe e vettori "C" in modo nativo, allora per cosa diavolo sto usando C++.

Victor Ciura: Saresti sorpreso che abbiamo un sacco di questi esterni "C" interfacce. E abbiamo un sacco di librerie che consumiamo tramite l'interfaccia "C".

Giacomo: Ma ci sono anche delle ragioni. Non sto dicendo, buttalo via del tutto. Sto dicendo che non voglio che sia la mia norma, a meno che non ci sia una ragione per cui devo farlo.

Victor Ciura: Almeno non hai alcuna preoccupazione per l'ABI lì.

Giacomo: In questo momento non hai nessuna preoccupazione per l'ABI.

Victor Ciura: "C" è ancora la lingua franca di Interop. A meno che non ti piaccia COM.

Giacomo: Stavo scrivendo oggetti in C++ verso il 2000. Avevo bisogno di esporre una gerarchia di oggetti con ereditarietà consumando con VB 6. Non riuscivo a capire come far ereditare correttamente le cose dell'interfaccia COM e riflettere questa eredità in VB 6. I ha chiesto al VisualTeam e mi hanno spiegato che dovevo creare un modello per il tipo ereditato. Questo mi ha completamente sconvolto perché all'epoca non capivo davvero nulla di C++.

Victor Ciura: L'interazione con COM è diventata molto più semplice al giorno d'oggi. Abbiamo modelli di attivazione più semplici e l'utilizzo è molto più semplice.

Giacomo: Che cosa utilizza attivamente COM a questo punto?

Victor Ciura: Tutto su Windows, se stiamo parlando del moderno Windows, roba Win RT. Tutto è costruito su COM. È nascosto.

Giacomo: COM è anche la tecnologia degli anni Novanta o qualcosa del genere, sai, molto tempo fa.

Victor Ciura: COM è una cosa molto ben progettata. E il fatto che venga sfruttato nelle API moderne e nel software attuale è un'API ben progettata ed è sopravvissuta alla prova del tempo.

Giacomo: Ora che siamo arrivati ​​così lontano, Victor, puoi descrivere ai nostri ascoltatori cos'è COM?

Victor Ciura: La spiegazione più semplice:tenta di modellare un oggetto, una superficie API che è indipendente dall'implementazione effettiva. Prova a fare una presentazione e una descrizione dei tipi, delle loro proprietà e delle loro funzionalità, ed espone cosa puoi invocare e quali sono i tipi e i layout dei tipi. È un mezzo per descrivere tutte queste informazioni. C'è un linguaggio dietro tutto questo. Si chiama MIDL. E puoi descriverlo indipendentemente dall'implementazione effettiva e indipendentemente dall'hardware o da dove risiede il codice effettivo. È un'astrazione che ti consente di parlare con oggetti, chiamare funzioni, testare valori e effettuare il marshalling di informazioni sebbene l'oggetto con cui stai parlando si trovi nel tuo stesso processo, o in un processo esterno o su un server diverso. È un'astrazione sull'API, sull'hardware e ti consente di descrivere in modo flessibile API e chiamare metodi e condividere i dati oltre i confini degli oggetti.

Giacomo: Sembra che lo stesso tipo di tecnologia sia stato reinventato alcune volte. CORBA o MOC sono simili oi file di interfaccia di SWIG per la generazione di associazioni di lingue diverse.

Victor Ciura: Abbiamo visto varie incarnazioni di loro ma come strumento di progettazione, questo è stato un enorme successo. Ed è sorprendente che l'intero ecosistema Windows sia costruito su questo tipo di cose. È una tecnologia molto efficiente.

Rob: Vogliamo riportarlo ai miti del C++? Hai altri miti? Forse ce ne sono di correlati a COM?

Victor Ciura: Nessun mito su COM, è solo storia, giusto?

Giacomo: Hai altri feedback al di fuori dello stream di YouTube? Come da colleghi o amici o qualsiasi altra cosa sul concetto di sfatare il mito che hai messo insieme?

Victor Ciura: Alcuni hanno detto che gli è piaciuto e possono dare qualche suggerimento, ma penso che riguardo a questo argomento, alcune persone siano riluttanti a proporre qualcosa perché hanno paura di come potrebbe essere interpretato in termini di "questo è davvero un mito ?", "è un'opinione popolare?". Temo che se lo presento come un mito candidato, potrebbe essere interpretato come se non fossi d'accordo o fossi d'accordo.

Vedo persone che apprezzano l'idea di sfatare idiomi comuni o indagare su cose che potrebbero aver visto lì da soli. Amano il fatto che possano utilizzare un episodio settimanale di C++ come riferimento:"Ehi, su questo argomento, c'è un episodio settimanale di C++ che ne parla". È bello avere un riferimento per ancorare le tue discussioni. In questo elenco di miti, come li chiamiamo noi, cercano di identificare i modelli che incontrano e di utilizzarli come catalizzatori per discussioni con i colleghi o altro.

Rob: Prima di lasciarti andare, Victor, c'è qualcosa in arrivo di cui vuoi parlarci o semplicemente dirci dove possiamo trovarti online.

Victor Ciura: Puoi contattarmi su Twitter all'indirizzo @ciura_victor. Vorrei rivedere le cose che abbiamo menzionato, l'articolo di Bartek sui visualizzatori di Visual Studio, i visualizzatori di debug. E voglio incoraggiare le persone a interagire con il debugger. È triste che le persone non sfruttino l'intero potere dei visualizzatori ed espongano i propri tipi lì. Mi piacerebbe se più persone ci provassero e magari dessero feedback al team per migliorare ulteriormente la funzionalità.

Voglio ricordare alla gente Clang Power Tools, siamo curiosi di vedere altri tuoi suggerimenti. Dove vorresti che questo strumento venisse migliorato? Se ti piacciono le euristiche standalone che abbiamo implementato nello strumento standalone per Clang Power Form, Clang Format Detector e Clang Format Configuration Tool e se hai idee, provalo e vedi se funziona per il tuo team. Eliminerà un'intera classe di dibattiti sugli stili e sugli spazi bianchi nelle revisioni del codice.

Incoraggio le persone a superare se stesse e le loro particolari esigenze di formattazione e semplicemente concordare un formato e applicarlo semplicemente come parte della catena di strumenti.

Rob: Bene, Victor, è stato fantastico averti di nuovo nello show.

Victor Ciura: Mi sono divertito molto. Grazie per avermi ospitato.

Giacomo: Grazie per esserti unito a noi.

Grazie mille per l'ascolto, mentre parliamo di C++, ci piacerebbe sapere cosa ne pensi del podcast. Facci sapere se stiamo discutendo delle cose che ti interessano o se hai un suggerimento per un argomento, ci piacerebbe sentirlo anche noi.

Puoi inviare via email tutti i tuoi pensieri a [email protected]. Apprezzeremmo anche se puoi mettere mi piace e seguire CppCast su Twitter. Puoi anche seguirmi su @robwirving e Jason @lefticus su Twitter.

Vorremmo anche ringraziare tutti i nostri sostenitori che aiutano a supportare lo spettacolo attraverso Patreon. Se desideri supportarci su Patreon, puoi farlo su patreon.com/CppCast. E, naturalmente, puoi trovare tutte queste informazioni e le note dello spettacolo sul sito Web del podcast su cppcast.com. Il tema musicale di questo episodio è stato fornito da podcastthemes.com.

Risorse

Podcast

  • Clang Power Tools e miti C++

Novità

  • 12 modi diversi per filtrare i contenitori nel moderno C++
  • Libreria More_concepts
  • Blizzard Diablo IV esegue il debug dei core dump di Linux da Visual Studio
  • Tutorial di Natvis Debugging Framework di Visual Studio

Collegamenti

  • Passaggi successivi per Clang Power Tools
  • Sfatare miti C++ con Victor e Jason

Sponsor

  • Assistenza visiva

Ospite

  • Victor Ciura