Question

Je dois faire des développements importants dans un grand, vieux système ASP rempli de spaghettis.Je suis éloigné d'ASP depuis longtemps, concentrant mes énergies sur le développement de Rails.

Une étape fondamentale que j'ai prise consiste à refactoriser les pages en sous-titres et fonctions avec des noms significatifs, afin qu'il soit au moins facile de comprendre en haut du fichier ce qui se passe généralement.

Existe-t-il un framework MVC intéressant pour ASP ?Ou une bonne pratique pour savoir comment au moins extraire la logique métier des vues ?(Je me souviens avoir fait beaucoup d'inclusions à l'époque – est-ce toujours la façon de procéder ?)

J'aimerais également faire des tests unitaires pour la logique métier, mais peut-être que j'en demande trop ?

Mise à jour:

Il y a plus de 200 scripts ASP dans le projet, quelques milliers de lignes ;) UGH !

Nous pouvons opter pour la "grande réécriture", mais d'ici là, lorsque je suis en train de changer une page, j'ai envie de passer un peu plus de temps à nettoyer les spaghettis.

Était-ce utile?

La solution

Hypothèses

La documentation du système Classic ASP est plutôt légère.

La direction ne cherche pas une réécriture.

Depuis que vous utilisez Ruby on Rails, votre ASP.NET (VB/C#) est au mieux passable.

Mon expérience

Moi aussi, j'ai hérité d'un système ASP classique qui a été assemblé bon gré mal gré par d'anciens types Excel-VBA.Il y avait beaucoup de ces trucs <font size=3>crap</font> (et il manque parfois des balises de fermeture ;Argggh !).Au cours de 2,5 ans, j'ai ajouté un système de sécurité, une bibliothèque commune, CSS+XHTML et j'ai pu forcer la chose à valider xhtml1.1 (sans type MIME approprié, malheureusement) et j'ai construit un système de reporting assez robuste et ajaxy qui est en cours d'élaboration. utilisé quotidiennement par 80 utilisateurs.

J'ai utilisé jEdit, avec cTags (comme mentionné par brouillage ci-dessus), et un tas d’autres plugins.

Mon conseilEssayez de créer un fichier d'inclusion principal à partir duquel importer tous les éléments couramment utilisés.Des éléments tels que la connexion/déconnexion, l'accès à la base de données, les services Web, les bibliothèques javascript, etc.

Utilisez des cours.Ils sont ultra-primitifs (pas d'héritage) mais comme le dit Jamting, ils peuvent être pratiques.

Indentez correctement les scripts.

Commentaire

Rédiger un document d'architecture externe.Personnellement, j'utilise LyX, car il est insensé de produire un PDF bien formaté, mais vous pouvez utiliser ce que vous voulez.Si vous utilisez un wiki, installez le complément graphviz et utilisez-le.Il est très simple de créer des diagrammes rapides qui peuvent être facilement modifiés.

Comme je n'ai aucune idée de l'importance des améliorations nécessaires, je suggère qu'avoir un bon document d'architecture de haut niveau à intermédiaire sera très utile pour planifier les améliorations.

Sur les tests unitaires de logique métier, la seule chose que j'ai trouvée qui fonctionne est de configurer un écouteur xml-rpc dans asp qui importe la bibliothèque principale et expose les fonctions (pas les sous-programmes cependant) dans l'un des sous-includes de la bibliothèque principale, puis construire, séparément, un système de tests unitaires dans un langage offrant une meilleure prise en charge des éléments qui appellent les fonctions ASP via xml-rpc.J'utilise Python, mais je pense que Ruby devrait faire l'affaire.(Cela a-t-il du sens?).Ce qui est cool, c'est que la personne qui écrit la partie test unitaire du logiciel n'a même pas besoin de regarder le code ASP, tant qu'elle a des descriptions décentes des fonctions à appeler, afin qu'elle puisse être quelqu'un à côté de vous.

Il existe un projet appelé aspunit sur sourceforge mais la dernière version date de 2004 et elle est marquée comme inactive.Je ne l'ai jamais utilisé mais c'est du pur vbscript.Un rapide coup d'œil au code me dit qu'il semble que les auteurs savaient ce qu'ils faisaient.

Enfin, si vous avez besoin d'aide, j'ai une certaine disponibilité pour effectuer du travail en télétravail sous contrat (peut-être 8 heures/semaine max).Suivez le lien pour obtenir les informations de contact.

Bonne chance!HTH.

Autres conseils

Puisqu'une réécriture complète d'un système fonctionnel peut être très dangereuse, je ne peux que vous donner un petit conseil :Configurez des balises exubérantes, ctags, sur votre projet.De cette façon, vous pouvez passer à la définition d'une fonction et d'un sous-simple, ce qui, je pense, aide beaucoup.

Sur la séparation de la logique des « vues ».VBScript prend en charge une sorte d'OO avec des classes.J'ai tendance à écrire des classes qui font la logique que j'inclus sur la page asp qui fait office de "vue".Ensuite, j'associe la vue à la classe comme Username :<%= MonCompte.NomUtilisateur %>.La classe MyAccount peut également avoir des méthodes telles que :MyAccount.Login() et ainsi de suite.

Un peu primitif, mais au moins vous pouvez encapsuler du code et le cacher du HTML.

Mon conseil serait de continuer la refactorisation, l'ASP classique prend en charge les classes, vous devriez donc pouvoir tout déplacer sauf le code d'affichage dans les fichiers ASP inclus qui contiennent uniquement des classes.Voir cet article pour plus de détails sur le passage de l'ancien asp vers ASP.NET.

Refactorisation ASP

En ce qui concerne une orientation future, je ne viserais pas les formulaires Web ASP.NET, mais plutôt le nouveau framework MVC de Microsoft, un module complémentaire d'ASP.NET). Il sera beaucoup plus simple de migrer vers cela depuis l'ASP classique.

j'utilise ASPUnité pour tester unitairement certains de nos ASP classiques et je le trouve utile.Il est peut-être ancien, mais ASP l'est aussi.C'est simple, mais cela fonctionne et vous pouvez le personnaliser ou l'étendre si nécessaire.

j'ai aussi trouvé Travailler efficacement avec le code existant par Michael Feathers pour être un guide utile pour trouver des moyens de tester une partie de cet ancien code.

Inclure des fichiers peut être utile à condition de rester simple.À un moment donné, j'ai essayé de créer une inclusion pour chaque classe et cela n'a pas très bien fonctionné.J'aime avoir quelques inclusions principales avec une logique métier commune, et pour les pages compliquées, parfois une inclusion avec une logique pour chacune de ces pages.Je suppose que vous pourriez faire du MVC avec une configuration similaire.

Y a-t-il une chance que vous puissiez passer d'ASP à ASP.Net ?Ou envisagez-vous de le conserver dans ASP classique, mais simplement de le nettoyer.Dans la mesure du possible, je recommanderais de migrer autant que possible vers .Net.Il semble que vous soyez de toute façon en train de réécrire/réorganiser beaucoup de code, donc passer à .Net ne nécessitera peut-être pas beaucoup d'efforts supplémentaires.

Vraisemblablement, quelqu'un d'autre a écrit la majeure partie ou la totalité du système que vous gérez actuellement.Recherchez les mauvaises habitudes habituelles (code répété, variables dont la portée est trop large, instructions if imbriquées, etc.) et refactorisez comme vous le feriez pour n'importe quel autre langage.Gardez un œil sur les éléments récurrents dans le même fichier ou dans des fichiers différents et résumez-les en fonctions.

Si le code a été écrit/maintenu par plusieurs personnes, il peut y avoir des problèmes liés au style de codage incohérent.Je trouve que remettre le code en ligne permet de voir plus facilement les choses qui peuvent être refactorisées.

"Des milliers de lignes" me font soupçonner qu'il peut également y avoir des situations où des éléments vaguement liés sont affichés sur la même page.Là encore, vous souhaitez les résumer dans des sous-programmes distincts.

Finalement, vous souhaitez écrire des objets pour aider à encapsuler des éléments tels que la connectivité de la base de données, mais il vous faudra un certain temps avant d'y arriver.

C'est très vieux, mais je n'ai pas pu m'empêcher d'ajouter mes deux cents.Si vous devez réécrire et continuer à utiliser l'ASP classique :

  • utilisez JScript!beaucoup plus puissant, vous obtenez l'héritage, et il y a quelques avantages secondaires comme l'utilisation des mêmes méthodes pour la validation côté serveur que celles que vous utilisez pour le côté client.
  • vous pouvez absolument faire du MVC - j'ai écrit un framework MVC, et il n'y avait pas beaucoup de lignes de code
  • vous pouvez également générer automatiquement vos classes de modèles avec un peu de travail.J'ai un code pour cela qui a plutôt bien fonctionné
  • assurez-vous que vous effectuez des requêtes paramétrées et que vous renvoyez toujours des jeux d'enregistrements déconnectés

Les pratiques de gestion de projets de développement de logiciels indiquent que des logiciels comme celui-ci doivent être retirés.

Je sais à quel point il est difficile de faire ce qu'il faut, encore plus lorsque le manager responsable sait tout et a peur de tout sauf de la pire des manières possibles.

Mais reste.Il est nécessaire de commencer à travailler sur le développement d'un nouveau logiciel.Il est tout simplement impossible de maintenir celui-ci pour toujours, et plus ils attendent de le retirer, pire encore.

Si vous ne disposez pas d'une documentation appropriée sur les spécifications/exigences (je pense qu'aucun logiciel asp au monde n'en a, étant donné les capacités noobatry de ces codeurs), vous aurez besoin à la fois d'un groupe d'utilisateurs connaissant les fonctionnalités du logiciel et d'un gestionnaire. responsable de la validation des exigences.Vous devrez examiner chaque fonctionnalité et documenter ses exigences.

Au cours de ce processus, vous en apprendrez davantage sur le logiciel et son activité.Une fois que vous avez suffisamment d’informations, vous pouvez commencer à en développer une nouvelle.

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