Passaggio da Qt / C ++ a C # / WPF - Guadagno di produttività?

4

Ho creato una piccola applicazione desktop (circa 15000 righe di codice, quindi non così grande) scritta in C ++ / Qt. Questo è non commerciale, solo un progetto di hobby e sto codificando nel mio tempo libero.

Più grande diventa l'applicazione, trovo sempre più noioso scrivere in C ++ e l'aggiunta di nuove funzionalità richiede molto tempo.

  • Trovo particolarmente difficile gestire manualmente la memoria - anche con puntatori intelligenti, devo spesso pensare alla proprietà, su come passare oggetti in modo efficiente.
  • I tempi di compilazione sono lenti, in quanto non esiste una compilazione in tempo reale
  • Anche la sintassi C ++ moderna è spesso un po 'criptica e piena di annotazioni di tipo e un po' noioso da scrivere
  • La mia applicazione si basa su diversi Qt Widget personalizzati, che rendono difficile l'utilizzo del Designer. Ciò comporta un notevole dispendio di tempo nella creazione manuale di semplici dialoghi e interfacce mediante codice.

La multipiattaforma è interessante, ma la maggior parte dei miei utenti è comunque su Windows.

Questi sono tutti motivi che mi fanno pensare al passaggio a C # / WPF.

D'altra parte, c'è il strong meme "every rewrite from scratch" (il famoso blog di Joel Spoesky), e temo di soffrire della sindrome "l'erba è sempre più verde dall'altra parte". / p>

Qual è la tua esperienza con i progetti convertiti da C ++ / Qt a C # / WPF? Quale aumento di produttività percepito hai ceduto dopo aver convertito e scritto puro C #? Quanto è stato noioso il processo di riscrittura? È difficile passare dal pensiero di Qt al segnale / slot all'approccio MVVM? Qual è la curva di apprendimento per WPF come?

    
posta ndbd 27.04.2018 - 13:07
fonte

3 risposte

3

Ho una significativa esperienza nello sviluppo dell'interfaccia utente C ++, principalmente in Qt, ma includo anche wxWidgets e raw32. Ho anche fatto uno sviluppo di C # UI in WPF.

Consiglio vivamente di utilizzare letteralmente le tecnologie dell'interfaccia utente che ho utilizzato, compreso raw win32, su C # / WPF. Nella mia esperienza è scarsamente documentato, incredibilmente lento e tutte le sue astrazioni si perdono come un setaccio.

Prova a cercare le soluzioni della gente a problemi come "Crea una variante di un controllo standard con un comportamento leggermente diverso" o come eseguire il debug dei problemi nelle dichiarazioni XAML. Dovresti darti un'idea di cosa aspettarti.

Personalmente non ho alcuna esperienza con WinForms, ma ho visto persone suggerirlo come alternativa; magari provalo se non vuoi più usare C ++.

    
risposta data 01.05.2018 - 10:19
fonte
3

Non ho alcuna esperienza con QT, ma ho trascorso oltre un decennio lavorando con C ++ e MFC. Ora ho quasi un decennio di lavoro con C # e WPF.

Trovo che io sia un ordine di grandezza più produttivo in C # / WPF di quanto non sia mai stato in C ++ / MFC.

Come linguaggio, mi trovo molto più produttivo in C # di quanto non sia mai stato in C ++. Parte di questo non deve preoccuparsi della gestione della memoria il più delle volte (libera la tua intelligenza a pensare ad altre cose). In parte questo è il fatto che la sintassi di C # è molto più pulita del C ++ e ha alcune caratteristiche davvero carine (anche se il C ++ sta migliorando con le nuove specifiche).

WPF è senza dubbio il framework UI più produttivo con cui abbia mai lavorato. XAML è dichiarativo (come HTML) ma typesafe (come C #). Secondo me, questo è il meglio di entrambi i mondi per la creazione di interfacce utente. L'associazione dati è una funzionalità molto potente che semplifica il collegamento dei controlli dell'interfaccia utente ai dati che manipolano.

    
risposta data 27.04.2018 - 15:28
fonte
1

Ho imparato C #, WPF, MVVM, Entity Framework e probabilmente alcune più tecnologie da zero dopo aver programmato per anni con VB6, VBA, SQL e altri.

È stata una curva di apprendimento ripida e ci è voluto molto tempo. Ma sono felice di averlo fatto. Perché C # e WPF sono tecnologie meravigliose, specialmente in combinazione con MVVM.

Molti anni fa ho scritto un programma in VB6 per riprodurre file audio e video su più schermi con una GUI facile da usare ma con ancora molte funzionalità. Ora ho sviluppato qualcosa di simile ma migliore da zero con le tecnologie di cui sopra. Ci vuole tempo ma è divertente farlo ed è divertente vedere tutte le nuove opzioni con animazioni, ecc.

Il mio consiglio: se fai questo "solo" per guadagnare soldi, è probabile che tutte le ore che trascorri per imparare le nuove tecnologie non verranno mai pagate. È molto lavoro per imparare tutto e molto altro lavoro per usarlo in modo efficiente (è lì che sono nel momento).

Se ti piace programmare e se ti piace vedere come funzionano le cose con le nuove tecnologie, allora ti consiglio di scrivere il tuo programma da zero. Ma sii pronto a scrivere e magari riscriverlo. Nel mio caso ho iniziato con il programma con C # e WPF e qualche tempo dopo è diventato difficile e poi ho imparato a conoscere MVVM e ho cambiato tutto secondo quel concetto. Ci è voluto molto tempo. Non ho ancora finito (principalmente a causa del tempo limitato), ma mi piace la programmazione e mi piace vedere i miei progressi. Non potrò mai pagare per tutto il tempo che mi costa, ma mi piace e mi darà più opzioni per il futuro. Questo è il motivo per cui lo faccio.

    
risposta data 27.04.2018 - 15:36
fonte

Leggi altre domande sui tag