Domanda

Ho letto su Stack Overflow alcune persone che stanno convertendo da C # 2.0 a C # 3, ma ne vale davvero la pena?

Ho un progetto che viene eseguito al 75% prima di passare alla fase di manutenzione. Mi chiedo se valga la pena passare a C # 3.0?

Aggiornamento:

Il progetto avrà ora un'interfaccia web, quindi prima di entrare nella fase di manutenzione dobbiamo sviluppare la web part (tutto è stato fatto per scopi interni con Windows Form). La maggior parte delle parti verrà ripristinata (back-end). Molte persone hanno detto che non ne valeva la pena in passato perché era già al 75% ... ma ora pensi ancora che non ne valga la pena?

Cosa è stato fatto finalmente

Infine, poiché stiamo continuando il progetto con l'interfaccia web, aggiorneremo alla 3.5 per il nuovo anno. Grazie a tutti per tutto il vostro contributo.

È stato utile?

Soluzione

No, non consiglierei. Vorrei consigliare di iniziare 3.5 solo su nuovi progetti, salvo diversamente specificato. Non avrai alcun vantaggio dal 3.5 semplicemente ricompilando, poiché il tuo codice è già stato scritto (o almeno il 75% di esso).

Se in futuro devi eseguire la migrazione a 3.5, puoi farlo facilmente. Ovviamente, avrai il codice in stile 2.0, ma ciò che viene fatto è fatto.

  • Sii prudente, non fare qualcosa se non ne hai bisogno.
  • Un'applicazione che è 75% in C # 2.0 e 25% in C # 3.0 non è esattamente una bella bestia da mantenere. Un'applicazione 100% C # 2.0 è sicuramente più gestibile.

Quando inizierai un nuovo progetto, allora passa a tutti! La nuova versione del framework è molto interessante e lo switch è caldamente consigliato.

Altri suggerimenti

Chiarimento
C # 3.5 non esiste. C'è C # 1.0, C # 2.0 e C # 3.0.

Poi c'è .NET 1.0, .NET 1.1, .NET 2.0, .NET 3.0 e .NET 3.5.

Non dovremmo confondere i due.

C # 3.0 vs C # 2.0
Ora, C # 3.0 vale la mossa? Direi che con l'esistenza di metodi di estensione ed espressioni Lambda, la risposta è sì. Queste due sole funzioni rendono il codice più semplice da leggere e più veloce da scrivere. Aggiungilo a proprietà implementate automaticamente, LINQ e metodi parziali e C # 3.0 si rivela una mossa vantaggiosa.

Tuttavia, non è necessariamente vantaggioso spostare un progetto esistente. Devi valutare i pro e i contro, in particolare per quanto riguarda l'introduzione di nuovi bug e instabilità, prima di decidere di migrare il lavoro esistente. Per i nuovi progetti, direi iniziare con C # 3.0.

C'è qualche caratteristica di C # 3.5 che desideri male in questa fase? :)

Se è LINQ, puoi provare LINQBridge . Con il multi-targeting di Studio e LINQBridge, sarai in grado di scrivere query locali (LINQ to Objects) usando tutta la potenza del compilatore C # 3.0, eppure i tuoi programmi richiederanno solo Framework 2.0.

Penso che molto di questo dipenderà dal tuo stile personale. IMHO, le migliori funzionalità di C # 3.5 si riducono davvero alle seguenti

  1. Lambda Expressions
  2. LINQ
  3. Metodi di estensione

Il mio codice OO tende ancora a sembrare un po 'orientato alla funzionalità. Pertanto vedo 3.5 come un enorme vantaggio e vale sicuramente la pena l'aggiornamento.

La cosa ancora migliore è che è possibile utilizzare il compilatore 3.5 per ridurre il CLR di destinazione 2.0. Ciò consente di eseguire la distribuzione in base a un'installazione 2.0 (rispetto a un'installazione 3.0 / 3.5) utilizzando il nuovo framework. Tutto quanto sopra può essere fatto in questo scenario se sei disposto ad aggiungere i tipi appropriati al tuo programma.

Secondo me, non c'è motivo di non passare alla 3.5.

La vera caratteristica killer è che puoi continuare a scegliere come target versioni precedenti del runtime (2.0+) mentre usi tutte le nuove funzionalità linguistiche. Quindi puoi usare le nuove espressioni lambda, i metodi di estensione, i tipi anonimi e tutte le altre cose buone. E se i tuoi clienti utilizzano ancora principalmente il framework 2.0, puoi continuare a scegliere il runtime precedente.

(Non usare nessuna delle classi dal framework 3.5, se devi scegliere come target versioni precedenti del runtime.)

Personalmente, penso che se stai facendo un'app per la GUI desktop, la soluzione migliore è usare il framework 3.0 o 3.5, dato che WPF è la migliore libreria di interfacce utente con cui abbia mai lavorato (da un colpo lungo).

D'altra parte, se hai già scritto la maggior parte della tua GUI in WinForms, allora potresti essere interessato al framework 3.5, che consente la mescolanza (limitata) di WinForms e elementi della GUI WPF. Puoi mantenere il lavoro che hai già fatto, ma aggiungi qualche tocco piacevole qua e là, ovunque abbia senso, con i controlli WPF.

Un'altra utile funzione del framework 3.5 è "Initializer di raccolta". Dai un'occhiata:

var myDictionary = new Dictionary<String, String> {
   { "key-1", "value-1" },
   { "key-2", "value-2" },
   { "key-3", "value-3" },
};

Pulito, eh?

Mi sarebbe piaciuto un po 'meglio se fosse un po' più simile a JSON. Ma è comunque una funzionalità molto conveniente.

Qualsiasi evento che puoi targetizzare quel codice per il runtime 2.0!

Se il tuo progetto è quasi completo, probabilmente non trarrai vantaggio dalle nuove funzionalità di 3.5. Per i nuovi progetti, vale sicuramente la pena dare un'occhiata.

Dipende molto dal progetto, a chi è destinato e cosa fa.

Sarebbe sicuro supporre che .NET Framework 2.0 sia su molti più computer rispetto alla versione 3.5.

Inoltre, c'è qualcosa di cui hai bisogno da .NET 3.5 che non è disponibile in 2.0 (come LINQ)? Se hai a che fare con molte query e dati, cambierei. Ma ancora una volta, dipende dal cliente e se si intende mantenere questa applicazione per il prossimo futuro.

Dal punto di vista tecnologico, è tutto framework versione 2 ed è uno sforzo molto piccolo da raggiungere. Le differenze tra 2.0, 3.0 e 3.5 sono solo codice libreria aggiuntivo e zucchero sintattico del compilatore.

Non è come se dovessi cambiare qualcosa; scegliendo come target il framework 3.5 hai più opzioni.

Dal punto di vista dei tuoi team: Sì, ne vale la pena. Nessuno vuole lavorare su vecchie basi di codice. Mentre sei nel vivo dello sviluppo, potresti anche utilizzare la tecnologia stabile più attuale.

Dipende davvero da cosa devi fare. Se il tuo progetto richiede espressioni Lambda in cui stai eseguendo query di oggetti con una sintassi chiara, dovresti guardare 3.0.

Attualmente sto leggendo C # In Depth di Jon Skeet, e lui adotta l'approccio di presentare una soluzione in C # 1.15, quindi evolve la soluzione per rappresentare la nuova e utile funzionalità che si ottiene in 2.0 e 3.0. Questo tipo di progressione sarebbe un mezzo perfetto per rispondere alle tue domande. Anche il libro legge bene, quindi sto scoprendo che lo sto superando rapidamente.

Devi valutare il costo rispetto al vantaggio. Non fornisci informazioni sufficienti sul tuo progetto per consentirci di consigliarti qui, ma considera:

  • il costo di conversione è piuttosto piccolo. C # 3.0 è quasi completamente retrocompatibile con 2.0 e funziona su framework 2.0
  • Il
  • vantaggio è anche piuttosto piccolo se la codifica è quasi terminata, ma potrebbe crescere a lungo termine. Una nuova funzionalità che potresti dover implementare in futuro potrebbe rivelarsi molto più semplice da implementare usando Linq, ad esempio.

Ho effettuato la conversione molte volte. Soprattutto perché la chiara sintassi delle espressioni lambda rende il codice più facile da seguire (per me comunque).

Uso ReSharper che semplifica l'utilizzo di nuove funzionalità 3.5 in alcuni show come suggerimenti di refactoring di ReSharper. L'uso di uno strumento del genere rende questa transizione molto più semplice.

3.5 si basa su 2.0, quindi non hai problemi a passare direttamente a 3.5.

Vorrei ... non c'è nulla di male e otterrai alcuni vantaggi dalle nuove funzionalità

Non capisco tutte le persone che dicono di non farlo. .NET 2.0 è il runtime corrente (CLR). .NET 3.0 e .NET 3.5 vengono entrambi eseguiti sul runtime 2.0. Passare a .NET 3.5 per ottenere le funzionalità di C # 3.0 è letteralmente una questione di modifica di un singolo menu a discesa nelle proprietà del progetto. (OK, e distribuzione del runtime 3.5 sui computer di destinazione se si utilizzano alcune funzionalità 3.5 come LINQ, ecc. Se l'installazione di 3.5 è un problema, non è una risposta così semplice.)

Non cambierei nulla a meno che tu non abbia una buona ragione per farlo; cioè c'è un bug che non puoi aggirare in 2.0.

L'aggiornamento del framework a un punto così tardivo nel progetto potrebbe causare alcuni problemi che in realtà non ti servono al momento.

Se hai un'estensione del progetto, potrebbe essere una buona cosa passare ora alla versione più recente di .NET, altrimenti non lo farei.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top