Question

J'ai lu sur Stack Overflow des personnes converties de C # 2.0 à C # 3, mais cela en vaut-il vraiment la peine?

J'ai un projet réalisé à 75% avant de passer en phase de maintenance. Je me demande si cela vaut la peine de passer au C 3.0?

Mise à jour:

Le projet aura désormais une interface Web. Par conséquent, avant d'entrer dans la phase de maintenance, nous devons développer la partie Web (tout a été fait à des fins internes avec Windows Forms). La plupart des pièces seront réutilisées (back-end). La plupart des gens ont dit que cela ne valait pas la peine dans le passé car il était déjà à 75% ... mais maintenant, vous pensez toujours que ça n'en vaut pas la peine?

Ce qui a été fait finalement

Enfin, puisque nous poursuivons le projet avec l'interface Web, nous mettrons à jour la version 3.5 pour la nouvelle année. Merci à tous pour vos contributions.

Était-ce utile?

La solution

Non, je conseillerais pas. Je conseillerais de commencer la mise à jour 3.5 uniquement sur les nouveaux projets, sauf indication contraire. En recompilant, vous ne tirerez aucun avantage de la version 3.5, car votre code est déjà écrit (ou au moins 75% de celui-ci).

Si vous devez migrer vers la version 3.5 ultérieurement, vous pouvez le faire facilement. Bien sûr, vous aurez un code de style 2.0, mais ce qui est fait est fait.

  • Soyez conservateur, ne faites rien sauf si vous en avez besoin.
  • Une application utilisant 75% en C # 2.0 et 25% en C # 3.0 n’est pas vraiment une bonne bête à maintenir. Une application 100% C # 2.0 est certainement plus facile à gérer.

Lorsque vous allez commencer un nouveau projet, changez-le! La nouvelle version du framework est très intéressante et le commutateur est vivement recommandé.

Autres conseils

Clarification
C # 3.5 n'existe pas. Il y a C # 1.0, C # 2.0 et C # 3.0.

Viennent ensuite .NET 1.0, .NET 1.1, .NET 2.0, .NET 3.0 et .NET 3.5.

Il ne faut pas confondre les deux.

C # 3.0 vs C # 2.0
Maintenant, C # 3.0 vaut-il le coup? Je dirais qu'avec l'existence de méthodes d'extension et d'expressions Lambda, la réponse est oui. Ces deux fonctionnalités seules permettent une lecture plus facile et une écriture plus rapide du code. Ajoutez-le aux propriétés implémentées automatiquement, aux méthodes LINQ et aux méthodes partielles, et C # 3.0 s’avère être un avantage.

Toutefois, il n'est pas nécessairement avantageux de déplacer un projet existant. Vous devez peser le pour et le contre, en particulier en ce qui concerne l'introduction de nouveaux bogues et l'instabilité, avant de décider de migrer le travail existant. Pour les nouveaux projets, je commencerais par C 3.0.

Y a-t-il une fonctionnalité de C # 3.5 que vous voulez mal à ce stade? :)

S'il s'agit de LINQ, vous pouvez essayer LINQBridge . Avec le multi-ciblage de Studio et LINQBridge, vous pourrez écrire des requêtes locales (LINQ to Objects) en utilisant toute la puissance du compilateur C # 3.0 & # 8212; et pourtant, vos programmes ne nécessitent que Framework 2.0.

Je pense que cela dépendra beaucoup de votre style personnel. IMHO, les meilleures fonctionnalités de C # 3.5 se résument vraiment à ce qui suit

  1. Expressions Lambda
  2. LINQ
  3. Méthodes d'extension

Mon code OO a toujours tendance à être un peu fonctionnel. Par conséquent, je considère la version 3.5 comme un avantage énorme et sa mise à jour en vaut vraiment la peine.

Ce qui est encore mieux, c’est qu’il est possible d’utiliser le compilateur 3.5 pour abaisser le CLR 2.0 cible. Cela vous permet de déployer selon une installation 2.0 (vs une installation 3.0 / 3.5) en utilisant le nouveau framework. Tout ce qui précède peut être réalisé dans ce scénario si vous souhaitez ajouter les types appropriés à votre programme.

À mon avis, il n'y a aucune bonne raison de ne pas passer à la version 3.5.

La vraie fonctionnalité qui tue, c’est que vous pouvez continuer à cibler les anciennes versions du runtime (2.0+) tout en utilisant toutes les nouvelles fonctionnalités de langage. Vous pouvez donc utiliser les nouvelles expressions lambda, les méthodes d'extension, les types anonymes et tous les autres trucs intéressants. Et si vos clients utilisent toujours principalement le framework 2.0, vous pouvez continuer à cibler le runtime précédent.

(N'utilisez simplement aucune des classes du framework 3.5, si vous devez cibler des versions d'exécution antérieures.)

Personnellement, si vous utilisez une application graphique de bureau, le mieux est d’utiliser le framework 3.0 ou 3.5, car WPF est la meilleure bibliothèque d’interface utilisateur avec laquelle j’ai travaillé (de loin).

D'un autre côté, si vous avez déjà écrit la plupart de votre interface graphique dans WinForms, le cadre 3.5 vous intéressera peut-être, ce qui permet un brassage (limité) des éléments de l'interface graphique WinForms et WPF. Vous pouvez garder le travail que vous avez déjà fait, mais ajoutez quelques petites touches ici et là, où que ce soit utile, avec les contrôles WPF.

Une autre caractéristique pratique du cadre 3.5 est "Initialisation de la collection". Découvrez ceci:

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

Neat, hein?

Je l'aurais un peu mieux aimé si c'était un peu plus semblable à JSON. Mais c’est quand même une fonctionnalité très pratique.

Vous pouvez éventuellement cibler ce code pour l'exécution 2.0!

Si votre projet est presque terminé, vous ne bénéficierez probablement pas des nouvelles fonctionnalités de la version 3.5. Pour les nouveaux projets, cela vaut certainement la peine d'être examiné.

Cela dépend vraiment du projet, à qui il est destiné et ce qu'il fait.

Il est prudent de deviner que le .NET Framework 2.0 est sur beaucoup plus d’ordinateurs que la version 3.5.

De plus, avez-vous besoin de .NET 3.5 qui n’est pas disponible en version 2.0 (comme LINQ)? Si vous traitez beaucoup de requêtes et de données, je changerais. Mais encore une fois, cela dépend du client et de votre intention de maintenir cette application dans un avenir prévisible.

Du point de vue de la technologie, il s’agit de la version 2 du framework et nécessite très peu d’efforts. Les différences entre 2.0, 3.0 et 3.5 ne sont que code de bibliothèque supplémentaire et du sucre syntaxique du compilateur.

Ce n’est pas comme si vous deviez changer quoi que ce soit; en ciblant le framework 3.5, vous avez plus d'options.

Du point de vue de vos équipes: Oui, ça vaut le coup. Personne ne veut travailler sur d'anciennes bases de code. Pendant que vous êtes en plein développement, vous pouvez aussi bien utiliser la technologie stable la plus récente.

Cela dépend vraiment de ce que vous devez faire. Si votre projet nécessite des expressions lambda dans lesquelles vous utilisez des objets de requête avec une syntaxe claire, consultez 3.0.

Je lis actuellement C # en profondeur de Jon Skeet, et lui adopte l’approche consistant à présenter une solution dans C # 1.15, puis fait évoluer la solution pour décrire les nouvelles fonctionnalités utiles des versions 2.0 et 3.0. Ce type de progression serait un moyen idéal pour répondre à vos questions. Le livre se lit bien aussi, alors je constate que je le traverse rapidement.

Vous devez peser le coût par rapport aux avantages. Vous ne fournissez pas assez d'informations sur votre projet pour nous permettre de vous conseiller ici, mais considérez:

  • le coût de la conversion est assez faible. C # 3.0 est presque entièrement compatible avec la version 2.0 et s’exécute sur le framework 2.0
  • L’avantage est également assez faible si le codage est presque terminé, mais pourrait augmenter à long terme. Une nouvelle fonctionnalité que vous devrez peut-être implémenter dans le futur pourrait s'avérer beaucoup plus facile à implémenter avec Linq, par exemple.

J'ai fait la conversion plusieurs fois. Principalement parce que la syntaxe claire des expressions lambda rend le code plus facile à suivre (pour moi en tout cas).

Je me sers de ReSharper , qui permet d'utiliser les nouvelles fonctionnalités de la version 3.5 en un clin d'œil. en tant que suggestions de refactoring par ReSharper. Utiliser un outil comme celui-ci facilite beaucoup cette transition.

3.5 s'appuie sur la version 2.0, vous n'aurez donc aucun problème à passer directement à la version 3.5.

Je voudrais ... il n'y a pas de mal et vous obtenez des avantages des nouvelles fonctionnalités

Je ne comprends pas tout ce que vous dites de ne pas faire. .NET 2.0 est le runtime actuel (CLR). .NET 3.0 et .NET 3.5 s'exécutent tous deux sur le runtime 2.0. Passer à .NET 3.5 pour obtenir les fonctionnalités de C # 3.0 consiste littéralement à modifier un seul menu déroulant dans les propriétés de votre projet. (OK, et déployez le runtime 3.5 sur vos machines cibles si vous utilisez certaines fonctionnalités de la version 3.5 telles que LINQ, etc. Si l'installation de 3.5 est un problème, la réponse n'est pas si simple.)

Je ne changerais rien sauf si vous avez une bonne raison de le faire; c'est-à-dire qu'il y a un bogue que vous ne pouvez pas contourner en 2.0.

La mise à niveau du cadre à un stade aussi avancé du projet risque de poser des problèmes dont vous n’avez vraiment pas besoin pour le moment.

Si vous avez une extension du projet, il serait peut-être intéressant de passer maintenant à la version la plus récente de .NET, sinon je ne le ferais pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top