Will & # 8220; Travailler efficacement avec le code hérité & # 8221; aider quelqu'un qui travaille avec une application portée de VB6 à VB.NET?

StackOverflow https://stackoverflow.com/questions/1029483

Question

Je souhaiterais refactoriser une grande application héritée écrite à l'origine dans Visual Basic 6.0 . et ensuite porté sur .NET. Pour pouvoir le faire en toute confiance, je souhaite organiser des tests unitaires autour du code existant afin de pouvoir comparer avant et après. Quel est le moyen le plus simple et le plus efficace de procéder?

Il existe un livre intitulé " Travailler efficacement avec du code hérité " cela pourrait m'aider. Cependant, il semble que cela ne concerne que les langages orientés objet et que Visual Basic 6.0 ne soit pas nécessairement OO. Ce livre peut-il encore m'aider? J'espère que quelqu'un qui l'a lu pourra en témoigner.

Plus précisément, cette application n’utilise d’autres classes que les formulaires eux-mêmes. Il accède à la base de données directement à partir des formulaires, et non de manière cohérente. Plusieurs personnes travaillant sur ce projet ont toutes adopté leur propre style, sans aucune norme.

Comme je l'ai dit, ce projet a été porté sur VB.NET. Toutefois, il est uniquement porté dans le sens où il est compilé sous Visual & Studio & 2008. Tous les concepts de codage sont Visual Basic 6.0.

Était-ce utile?

La solution

Cela ne concerne pas uniquement les langues orientées objet (OO). Les grandes sections traitent de la gestion du code hérité en C.

Alors oui, achetez-le!

Il y a un chapitre entier (Chapitre 19) appelé:

  

Mon projet n'est pas orienté objet. Comment puis-je apporter des modifications en toute sécurité?

Il existe également un vbUnit , un xUnit peut vous aider à utiliser TDD avec Visual Basic 6.0 .

En fait, j’ai mal interprété la question et je pensais que vous alliez mettre en communication, pas que vous l’ayez déjà fait. Dans ce cas, vous avez une tonne de VB.NET de code "hérité" qui est totalement le livre pour vous. Vous pouvez tirer parti des fonctionnalités OO de VB.NET et utiliser le reste du livre.

Je ne peux vraiment pas recommander ce livre davantage.

Autres conseils

oui; les concepts du livre sont grands et puissants et vont au-delà de la POO. Et VB6 peut être orienté objet, bien qu’il ne s’agisse pas d’un langage aussi orienté objet que certains.

L'un des concepts les plus puissants du livre est celui de "coutures", essentiellement des endroits où vous pouvez casser votre code, y insérer des tests ou isoler ou résumer des éléments de fonctionnalité. Ce n’est qu’un des concepts qui s’applique même au code de procédure.

Vous voudrez peut-être préciser les questions.

Bien que VB6 ne soit pas un langage OO pur en soi, il existe suffisamment d'éléments OO pour que les choses soient familières; Il existe également un certain nombre de plug-ins de tests unitaires pour VB6 IDE.

Mais prenons quelques composants VB6 de haut niveau:

  • Les formulaires sont des objets (vous pouvez créer de nouvelles instances).
  • Les modules se comportent comme des classes utilisant uniquement des méthodes statiques.
  • Classes & amp; Les contrôles utilisateur sont aussi proches des objets que vous obtiendrez. Le manque de constructeur complique les choses, mais nous espérons que le développeur original est resté avec Initialize ou a écrit un sous-fichier Init cohérent.
  • Les événements en VB sont impairs; c'est aussi ce qui vous tracassera probablement le plus. Un code caché et dynamique qui dépend d'un ordre particulier d'événements est sans doute éparpillé partout.
  • Pages de propriétés. Eh bien, c'est ce que c'est.

Commencez par les meilleures pratiques de VB. Si l'application n'a pas été conçue avec le code de bonnes pratiques en tête, je pense que cette étape vous évitera beaucoup de soucis.

Vous avez certainement du pain sur la planche, mais voici une stratégie à envisager avant de réaliser TOUT travail .NET.

Déplacez autant que possible le code FORM sous-jacent dans une classe: un fichier de classe par formulaire au début. En substance, les gestionnaires d’événements de formulaire ne doivent faire que des appels proxy à des méthodes dans une instance de classe sous-jacente; toutes les méthodes personnalisées peuvent évidemment être déplacées vers le fichier de classe.

Après avoir lu le guide de bonnes pratiques (etc.) de Microsoft et d’autres pour vous aider à préparer la migration .NET, vous êtes fondamentalement prêt à recoder / refactoriser: des ennuis tels que traitement des erreurs, classement des événements, objets / variantes liés tardivement, collections, etc.

Un mot sur le code des erreurs gérées: surtout , il est difficile de dupliquer les erreurs spaghettis, en particulier du fait que le codeur Visual Basic moyen avait un mauvais talent pour l'utiliser en tant que logique de contrôle de flux . Il est presque utile de séparer chaque bloc On Error en sous-programmes distincts, si vous en avez plus de deux dans un programme.

Une fois le code nettoyé, vous pouvez également envisager de refactoriser le code Visual Basic en abstractions sensibles (par exemple, une seule classe d'adaptateur de données avec connexion, etc.), mais vous serez le meilleur juge pour ça.

Vous n’aimerez peut-être pas cette approche, alors testez définitivement les eaux avec un seul formulaire.

Je possède une copie que j'ai achetée pour essayer de contrôler notre projet C / C ++. Comme je manquais la fonctionnalité C # / .NET a à offrir.

Le livre est très C / C ++, mais, comme le dit John, il existe un chapitre sur le travail sans objets.

Mais si, comme vous le dites, votre code est porté sur .NET, il ne s'agit plus d'un code Visual Basic 6.0. .NET dispose de nombreuses méthodes Visual Basic / C # pour vous permettre d’accrocher votre code et de le tester. Cela dit, le livre vous donnera un bon aperçu des différentes manières d’intégrer une application et des stratégies pour maîtriser un vieux projet volumineux.

Je suggérerais de jeter un coup d'œil sur Refactoring: amélioration de la conception du code existant , ce qui est une excellente lecture indispensable.

Vous êtes peut-être à la recherche de Refactoring professionnel dans Visual Basic . Je ne l'ai pas lu, mais cela semble applicable.

Je pense que vous constaterez que les tests de caractérisation présentent le plus grand avantage. Ils devraient être automatisés. Sans tests de caractérisation, vous devrez alors tester manuellement votre application / code en l'exécutant réellement. Il est si facile de manquer de tester les fonctionnalités critiques lors de l'ajout de nouveau code. Cela vient de ma propre expérience.

La méthode Sprout et la classe Sprout sont importantes lors de l'ajout d'un nouveau code.

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