Frage

Eine Sache, die wirklich ist schon das Leben schwer macht in auf der Code-Basis auf einem ASP klassisches Projekt Geschwindigkeit Aufstehen ist, dass die Include-Datei Situation Art ein Chaos ist. Ich finde manchmal die Funktion ich suchte in einer Include-Datei enthalten ist, die völlig unabhängig ist. Hat jemand einen Rat hat, wie diese so umgestalten, dass man leichter kann sagen, wo eine Funktion ist, wenn sie benötigen, um es zu finden?

EDIT: Eine Sache, die ich zu fragen vergaß: hat Vbscript jede Art von Mechanismus für eine Datei verhindert zweimal enthalten sind? Sorta wie # ifndef die von C?

War es hilfreich?

Lösung

Es gibt ein paar grundlegende Dinge, die Sie tun können, wenn sie über eine klassische ASP-Anwendung nehmen, aber Sie werden wahrscheinlich Bedauern darüber, am Ende, sie zu tun.

  1. beseitigen doppelte Include-Dateien . Jede klassische ASP App die ich je gesehen habe, hat 5 „login.asp“ Seiten hat und 7 „datepicker.js“ Dateien und so weiter. Jage und entfernen Sie alle Duplikate und Verweise dann in den Rest der App ändern, falls erforderlich. Achten Sie darauf, eine Diff Prüfung für jede Datei zu tun, wie Sie es entfernen - oft die duplizierten Dateien haben leichte Unterschiede, da der ursprüngliche Autor es kopiert und dann änderte nur die Kopie. Dies ist eine großartige Sache für Evolution, aber nicht so viel für Code.
  2. Erstellen Sie eine rationale Ordnerstruktur und verschieben Sie alle Dateien hinein. Dies ist offensichtlich, aber es ist diejenige, die Sie werden die meisten bedauern tun. Ob die Links in der Anwendung sind relativ oder absolut, werden Sie die meisten von ihnen ändern.
  3. Kombinieren Sie alle Ihre Include-Dateien in eine große Datei . Sie können dann erneut, um alle Funktionen logisch und brechen sie in einzelne, vernünftig genannten Dateien. Sie werden dann durch die App-Seite für Seite gehen und herauszufinden, was die include-Anweisungen auf jeder Seite sein müssen (oder Stick mit der einer Datei, und schließen Sie sich einfach auf jeder Seite - ich kann mich nicht erinnern, ob oder nicht das ist eine gute Idee, in ASP). Ich kann nicht den Schmerz Ebene begreift hier beteiligt ist, und das ist, unter der Annahme, dass die vorhandenen Dateien enthalten keinen starken Gebrauch von demselben Namen Globals machen.

Ich würde irgendetwas davon nicht tun. Steve Yegge (glaube ich), „ es ist nichts falsch mit einer klassischen ASP-Anwendung, die kann nicht mit einer Gesamt Rewrite festgelegt werden“ paraphrasieren. Ich bin sehr ernst damit - ich glaube nicht, dass es eine größere Verschwendung von Zeit des Programmierers in dieser Welt als einen ASP-App beibehalten wird, und das Problem wird nur schlimmer als ASP immer mehr veralten bekommt

.

Andere Tipps

MusiGenisis Aufzählungszeichen Liste ist ein guter Rat zu folgen, aber ich würde nicht zustimmen mit -

"Ich würde nichts davon tun. Steve Yegge paraphrasieren (glaube ich),‚es ist nichts falsch mit einer klassischen ASP-Anwendung, die mit einer Gesamt Rewrite‘kann nicht festgelegt werden. Ich bin sehr ernst meint. - ich glaube nicht, dass es in dieser Welt eine größere Verschwendung eines Programmierers Zeit ist, als die Aufrechterhaltung bekommt eine ASP-Anwendung, und das Problem nur noch schlimmer als ASP immer mehr veralten wird "

Alle sehr gut, aber wenn es eine beträchtliche Erbe app tun vollständige Wieder schreibt ist oft nicht möglich, da ein Mangel an Entwicklungszeit / Ressource.

Wir haben einen ziemlich großer klassischer ASP-App, die Arme und Beine im Laufe der Jahre gewachsen ist, ist es nicht schön ist, aber es macht die geschäftlichen Anforderungen dienen. Wir haben keine Zeit die nächsten sechs Monate tun einer komplette Re-write zu verbringen, wäre es schön, aber einfach nicht möglich. Unser Ansatz ist -

  1. Dabei gilt es neue Funktionalität ist erforderlich, es in ASP.NET implementiert wird. Dies geschieht, 95% der Zeit. Die 5% Grenzfälle in der Regel sind, dass es eine große Anzahl von Punkten, wo der neue App-Code der alte App berührt erfordern uns eine Menge von klassischem ASP Nacharbeiten potenziell zu tun macht den App zerbrechliche.

  2. Wo es eine Änderung in der Funktionalität, die wir prüfen, ob wir zu ASP.NET mit minimalen Auswirkungen Refactoring können. Wenn dies nicht möglich ist, dann werden wir die Änderung im klassischen ASP implementieren und vorhandenen Code aufzuräumen, wie wir zusammen zum Beispiel gehen Vereinfachung der Datei Verschachtelung umfasst, Javascript mit mehr Cross-Browser-Kommandocode ersetzt, das Ding irgendwie.

In Antwort auf Ihre Frage über # ifndef ist, gibt es kein Äquivalent ich Angst habe.

  1. Verwenden Sie eine Datei zur globalen Überschriften und umfasst (t-head.asp Name es lässt). Diese Datei wird in allen ASP-Dateien enthalten.
  2. Verwenden Sie eine Datei der Website visuelle globale Header (Logos, Menüs usw.) zu machen und schließen es direkt hinter ihm. Nennen wir es t-begin.asp
  3. Verwenden Sie eine Datei der Website visuelle globale Fußzeile (Urheberrecht, Google Analytics, etc.) und das Schließen aller divs oder Tabellen in t-begin.asp geöffnet zu machen. Diese Datei t-end.asp Nennen wir
  4. Verwenden Sie einen Ordner, um die Business-Logik-Dateien, die so genannten BUS zu setzen. Die Dateien in diesem Ordner können nicht beinhaltet haben. Jede Funktion in der Datei mit dem Namen der Logikeinheit vorangestellt werden muss (IE: alle Funktion in Products.asp mit Produkt beginnen muss _ *)
  5. Verwenden Sie einen Ordner einige wiederverwendet UI-Code setzen namens UI. Die Dateien in diesem Ordner können nicht beinhaltet haben.

Beispiel:

<%@  Language=VBScript %>
<% Option Explicit %>
<% Response.Buffer = true%>
<html>
<head>
<!--#include file="../general/t-head.asp"-->
<!--#include file="../bus/product.asp"-->
<title>Products page</title>
</head>
<body>
<!--#include file="../general/t-begin.asp"-->

   <% 'all your code  %>

<!--#include file="../general/t-end.asp"--> 
</body>
</html>

Wow. Es überrascht mich immer wieder, wie viele Menschen einen Hass für ASP haben. In anständigen Händen ist es eine durchaus in der Lage Sprache für Web-Anwendungen zu entwerfen.

Allerdings werde ich zugeben, dass die Art und Weise Include-Dateien verwaltet werden, in ASP ein bisschen ein brainache sein kann - denn (je nachdem, wie Sie sie verwenden) sie geladen werden müssen und analysiert, auch wenn Sie nicht die Hälfte mit die Funktionen, die innerhalb.

Ich neige dazu, eine Include-Datei (initialise.asp oder so) haben, dass sich Links zu verschiedenen Funktionen Bibliotheken enthält (lib_http.asp, lib_mssql.asp oder ähnliches) und alle Bibliotheksfunktionen in sich geschlossen sind, so gibt es keine Sorgen über Kreuzung Variablen. Jegliche globalen Variablen deklariert und setzen in der Master-Datei. Dies bedeutet, dass ich eine Funktion überall verwenden kann, jederzeit und keine Sorgen zu machen, wo es definiert wurde, ist es dort nur für den Einsatz. Und IDEs wie Visual Studio und PrimalScript hat die Möglichkeit, auf „Definition springen“, wenn Sie einen Anruf an eine Funktion, die Sie nicht erkennen.

Dann jedes Skript spezifische umfasst im Skript nach dem Aufruf dieser Master enthalten sind Include-Datei.

Ich gebe zu, dass dies ein speicherhungrigen Ansatz, da alle Funktionen in allen Bibliotheken werden für jeden Skriptaufruf kompiliert, so dass das Verfahren muss für jeden Standort zu verfeinern Sie entwickeln - entscheiden, was über den Master zu nennen sind und was mehr Seite spezifisch. Es wäre schön, dass man nur laden, was Sie brauchen - aber das ist der DLL-Ansatz und ist für die Mehrheit der realen Entwicklungen nicht zur Verfügung, und auch würden Sie den Prozessor Kosten für die Erstellung kleine Skripte abwägen müssen vs Laden Komponenten.

Eine kurze Verzeichnisstruktur ist erforderlich und leicht entwickelt, aber es kann eine lästige Pflicht durch den gesamten Code in eine bestehende Website zu waten und alle Links oder MapPath Anrufe ändern. Beachten Sie außerdem, dass einige IIS-Administratoren die '..\' Methode durchqueren Verzeichnisse über VBScript nicht zulassen, so werden alle Dateireferenzen haben absolute Pfade sein.

Ich glaube, Sie berücksichtigen sollten Ihren Code von ASP VBScript zu Visual Basic COM-DLLs zu bewegen. das wird Leichtigkeit auf Sie haben zu viel enthält.

Ich weiß nicht, von einer Art und Weise eine doppelte Integration, andere als immer eine Fehlermeldung zu verhindern, ist. Sind Sie sehen auf der ganzen Seite platziert enthält, was es schwierig macht zu erkennen?

Wie Nebenbei bemerkt, arbeiten Sie mit einer Kopie des Codes und der Datenbank auf einem Entwicklungs-Server? So schnell wie möglich von meiner Erfahrung ist das erste, was zu tun, um sich von der Live-Site zu trennen. Während ein Streit zunächst, wird es Ihnen die Freiheit, um Änderungen vorzunehmen, ohne die Live-Site vermasselt. Es ist einfach zu machen, dass eine winzige Änderung in einer Include und BAM! die gesamte Website untergeht.

Ich habe durch ein paar Projekten gearbeitet, wie Sie beschrieben haben und verwendet die folgenden Strategien:

Komplette Überarbeitung -. Perfekt, wenn es Zeit / Geld, aber in der Regel bekomme ich den Anruf, wenn etwas schief gegangen ist und Ergebnisse nötig sind, um so schnell wie möglich

Kleinere Projekte - öffne ich alles in der IDE und starten Sie einfach alle Projektdateien für die Funktionen / sub suchen, um eine Kenntnis der Logik gehören zu bauen. So ziemlich jedes Mal, alles ist überall verteilt, so beginne ich den Wiederaufbau des von Business-Logik organisiert umfasst. Ich habe auch über Inline-Code (Roh-Code, nicht Subs oder Funktionen) laufen in ein geworfen sind, so dass ich in der Regel nur den Code ziehen später für Refactoring in die Seite zurück.

Größere Projekte - Ich werde einige Code verwenden Ich habe rumliegen includes für Leitungen mit sub / Funktionsköpfe und Dump diejenigen in eine Textdatei zu analysieren eine Liste aufzubauen, was Routinen sind, wo und auf das verweisen. Das ist praktisch, wenn Sie eine Tonne haben von auf jeder Seite umfasst und kann den Kopf nicht bekommen um die Code-Basis.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top