Les meilleures pratiques pour refactorisation ASP classique?

voix
14

Je dois faire un peu de développement important dans un grand, vieux, monté spaghetti système ASP. Je suis loin de ASP depuis longtemps, en se concentrant mes énergies sur le développement Rails.

Une étape de base que j'ai pris est de factoriser pages dans les sous-marins et des fonctions avec des noms significatifs, de sorte qu'au moins il est facile de comprendre @ haut du fichier ce qui se passe généralement.

Y at-il un cadre intéressant pour MVC ASP? Ou une meilleure pratique sur la façon d'obtenir au moins la logique métier sur les points de vue? (Je me souviens avoir fait beaucoup de inclut dans la journée - est-ce toujours le moyen de le faire?)

J'aimerais obtenir des tests unitaires allant pour la logique métier aussi, mais peut-être que je demande trop?

Mettre à jour:

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

On peut opter pour le « grand rewrite », mais jusque-là, quand je suis à changer une page, je veux passer un peu de temps à nettoyer les spaghettis.

Créé 23/08/2008 à 01:56
source utilisateur
Dans d'autres langues...                            


8 réponses

voix
1

Est-il possible que vous pourriez passer d'ASP à ASP.Net? Vous cherchez à maintenir en ASP classique, mais juste le nettoyer vers le haut. Si possible, je recommande de transférer autant que possible de passer à .Net. Il semble que vous pouvez rédigerait / réorganiser beaucoup de code de toute façon, si émouvants pour .Net peuvent ne pas être beaucoup d'effort supplémentaire.

Créé 23/08/2008 à 16:46
source utilisateur

voix
3

Depuis une réécriture complète d'un système de travail peut être très dangereux, je ne peux vous donner une petite astuce: Mettre en place des balises exubérantes, ctags, sur votre projet. De cette façon, vous pouvez passer à la définition d'une fonction et sous facile, ce qui je pense aide beaucoup.

Sur la logique de séparation « vues ». VBScript soutient som type de OO avec des classes. J'ai tendance à écrire des classes qui font la logique que j'inscrire sur la page asp qui agit comme une « vue ». Puis-je brancher ensemble la vue avec la classe comme nom d'utilisateur: <% = MyAccount.UserName%>. La classe MonCompte peut aussi avoir des méthodes telles que: MyAccount.Login () et ainsi de suite.

Sorte de primitif, mais au moins vous pouvez encapsuler un code et le cacher à partir du HTML.

Créé 23/08/2008 à 21:20
source utilisateur

voix
1

On peut supposer que quelqu'un d'autre a écrit la plupart ou la totalité du système que vous maintenez maintenant. Recherchez les mauvaises habitudes habituelles (code répétées, les variables qui sont trop largement, imbriquées si la portée se déclarations, etc.), et factoriser comme vous le feriez dans une autre langue. Gardez un œil sur les choses récurrentes dans le même fichier ou des fichiers différents et les abstraits en fonctions.

Si le code a été écrit / maintenu par diverses personnes, il pourrait y avoir quelques problèmes avec le style de codage incohérent. Je trouve que le code apportant de nouveau dans la ligne, il est plus facile de voir les choses qui peuvent être refactorisé.

« Des milliers de lignes longues » me fait suspect qu'il peut y avoir aussi des situations où les choses liées lâchement sont affichés sur la même page. Là encore, vous voulez abstraire en sous-routines séparées.

Finalement, vous voulez être des objets d'écriture pour aider encapsulent des choses comme la connectivité de base de données, mais il faudra un certain temps avant d'y arriver.

Créé 13/09/2008 à 04:04
source utilisateur

voix
10

Hypothèses

La documentation du système ASP classique est plutôt léger.

La direction ne cherche pas une ré-écriture.

Depuis que vous avez fait sur des rails rubis, votre (VB / C #) ASP.NET est passable au mieux.

Mon expérience

Moi aussi hérité d' un système ASP classique qui a été giflé ensemble bon gré mal gré par ex types Excel vba. Il y avait beaucoup de ce genre de choses <font size=3>crap</font>(et parfois manquants 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 a pu forcer la chose à valider xhtml1.1 (sans bon type mime, malheureusement) et construit un système de rapports assez robuste et ajaxy qui est en cours utilisé quotidiennement par 80 utilisateurs.

Je jEdit, avec Ctags (tel que mentionné par jamting ci - dessus) et un groupe d'autres greffons.

Mon conseil Essayez de créer un maître inclure fichier à partir duquel importer tous les trucs qui est couramment utilisé. Des trucs comme connexion / déconnexion, l' accès base de données, services web, javascript libs, etc.

N'utiliser des classes. Ils sont ultra-primitifs (pas d'héritage), mais comme dit jamting, ils peuvent être pratique.

Indentez les scripts correctement.

Commentaire

Ecrire un document d'architecture extérieure. Personnellement, j'utiliser LyX, parce qu'il est mort cérébrale pour produire un bien formaté pdf, mais vous pouvez utiliser ce que vous voulez. Si vous utilisez un wiki, obtenir le graphviz add-in installé et l'utiliser. Il est super facile de faire des diagrammes rapides qui peuvent être facilement modifiés.

Depuis que je ne sais pas comment les améliorations substantielles doivent être, je suggère d'avoir un bon haut niveau de document d'architecture de niveau intermédiaire sera très utile dans la planification des améliorations.

Sur les tests unitaires de logique métier, la seule chose que je trouve qui fonctionne est mise en place d'un auditeur xml-rpc dans asp qui importe la bibliothèque principale et expose les fonctions (pas sous-routines cependant) dans un des sous-comprend de la bibliothèque principale, puis construire, séparément, un système de test unitaire dans une langue avec un meilleur soutien pour les choses qui appelle les fonctions ASP par xml-rpc. J'utilise python, mais je pense que Ruby devrait faire l'affaire. (Cela a-t-il du sens?). La chose cool est que la personne qui écrit la partie unité test du logiciel n'a pas besoin de regarder même le code ASP, tant qu'ils ont des descriptions dignes des fonctions d'appel, afin qu'ils puissent être quelqu'un à côté de vous.

Il y a un projet appelé aspunit à SourceForge , mais la dernière version a été en 2004 et il est marqué comme inactif. Jamais utilisé, mais il est pur vbscript. Un coup d' oeil sur le 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 travailler contrat de télétravail (peut-être 8 heures / semaine max). Suivez la piste de lien pour plus d'informations de contact.

Bonne chance! HTH.

Créé 13/09/2008 à 07:13
source utilisateur

voix
2

Mon conseil serait de poursuivre refactoring, ASP classique prend en charge les classes, donc vous devriez être en mesure de déplacer tous, mais tout le code d'affichage dans des fichiers ASP inclus qui contiennent seulement des classes. Voir cet article de détails de passer de l'ancienne asp vers ASP.NET

refactoring ASP

En ce qui concerne l'orientation future, je ne serais pas viser des formulaires web ASP.NET, au lieu que je vais pour le nouveau framework MVC de Microsoft un add-on à d'ASP.NET) Il sera beaucoup plus simple migration vers ce à partir d'ASP classique.

Créé 05/11/2008 à 11:14
source utilisateur

voix
2

J'utilise ASPUnit pour les tests unitaires certains de nos ASP classique et trouve qu'il est utile. Il est peut - être vieux, mais il en est ASP. Il est simple, mais il ne fonctionne et vous pouvez personnaliser ou étendre si nécessaire.

Je l' ai aussi trouvé Travailler efficacement avec Legacy Code par Michael Feathers être un guide utile pour trouver des moyens d'obtenir une partie de ce vieux code en cours de test.

Inclure les fichiers peuvent aider aussi longtemps que vous le garder simple. À un moment donné, j'ai essayé de créer une liste d'inclusion pour chaque classe et cela ne fonctionne pas trop bien. J'aime avoir un couple principal comprend une logique commerciale commune, et pour les pages compliquées parfois une comprennent la logique pour chacune de ces pages. Je suppose que vous pourriez faire avec MVC une configuration similaire.

Créé 15/11/2008 à 20:27
source utilisateur

voix
0

Ceci est très vieux, mais ne pouvait pas empêcher d'ajouter mes deux cents. Si vous devez réécrire, et doit continuer à utiliser ASP classique:

  • utiliser JScript! beaucoup plus puissant, vous obtenez l'héritage, et il y a quelques bons avantages secondaires comme en utilisant les mêmes méthodes de validation côté serveur que vous utilisez pour côté client
  • vous pouvez absolument faire MVC - j'ai écrit un framework MVC, et il n'a pas que beaucoup de lignes de code
  • vous pouvez également générer vos classes de modèle automatiquement avec un peu de travail. J'ai un code pour ce qui a fonctionné assez bien
  • assurez-vous que vous faites des requêtes paramétrées, et toujours le retour d'enregistrement déconnectés
Créé 21/04/2010 à 20:36
source utilisateur

voix
0

Développement de logiciels pratiques de gestion de projet indique que des logiciels comme celui-ci exigent de se retirer.

Je sais combien il est difficile de faire la bonne chose, encore plus lorsque le gestionnaire responsable sait SHT et a peur de tout autre que la wost possible.

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 la Loger qu'ils attendent de prendre sa retraite, il le pire.

Si vous ne disposez pas de documentation spécification / des exigences proprement dites (je pense pas de logiciel de asp dans le monde ne, compte tenu de la hability de noobatry de ces codeurs), vous aurez besoin à la fois un groupe d'utilisateurs qui connaissent les fonctionnalités du logiciel et un gestionnaire d'être responsable de la validation des exigences. Vous aurez besoin de passer en revue toutes les fonctionnalités et documenter ses exigences.

Au cours de ce processus, vous allez en apprendre davantage sur le logiciel et ses activités. Une fois que vous avez assez d'informations, vous pouvez commencer à développer un nouveau.

Créé 24/06/2015 à 15:57
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more