Ich habe eines Nachmittags Zeit, um die Vorteile von .NET gegenüber VB6 hervorzuheben. Was soll ich sagen? [geschlossen]

9

Meine Firma ist eine kleine 20-köpfige Ingenieurbüro. Die gesamte Anwendungsprogrammierung hier wird in VB6 von zwei Personen durchgeführt, die sich während ihrer Arbeit in den letzten mehr als 25 Jahren VB6 vor dem Hintergrund der Montage beigebracht haben, und von mir.

Infolgedessen ist der VB6-Code mit schrecklichen Codegerüchen übersät , wie Tonnen von streng typisierten Variablen, furchtbar langen Funktionen, Hunderten von öffentlichen globalen Variablen (von denen einige der Weitergabe von Argumenten und der Rückgabe von Werten vorgezogen werden) und keinem einzelnen Objekt Klasse. Refactoring ist nahezu unmöglich, und Änderungen erfordern zu viel Durchsuchen des Codes und scheinen, sobald sie vorgenommen wurden, immer mehr Löcher einzuführen.

Mein Chef erkennt, dass VB6 eine tote Technologie ist, und ist bereit, auf meine Bitten zu hören, für eine neue Entwicklung zu .NET zu wechseln. Wir gehen weiter zu .NET, aber er sieht darin eine Möglichkeit, die Kompatibilität mit den neueren Windows-Betriebssystemen aufrechtzuerhalten, und nicht darin, besseren Code zu schreiben.

Wie kann ich die Vorteile der .NET-Sprache gegenüber VB6 über die reine Aktualität hinaus am besten erklären? Was kann ich sagen, um am besten zu betonen, dass die Umstellung auf .NET ein guter Schritt ist, aber auch bedeutet, dass sich auch unser aktuelles Programmierparadigma ändern sollte? Sobald mein Chef hört, dass Visual Basic .NET genauso aussieht wie VB6, weiß ich, dass sein erster Instinkt darin besteht, unser altes Code-Chaos einfach in .NET zu konvertieren.

Ich verstehe, dass es unmöglich sein wird, die Einstellung eines Menschen an einem einzigen Nachmittag zu ändern, aber wie kann ich zumindest meinen Chef davon überzeugen, dass Dinge wie stark typisierte Variablen, benutzerdefinierte Klassen und private Felder keine reine Zeitverschwendung sind? und Energie?

dlras2
quelle
4
VB6-Entwickler sind eine aussterbende Rasse? Versuchen Sie, .NET-Entwickler und VB6-Entwickler zu rekrutieren. Sehen Sie, wie viele Lebensläufe Sie jeweils erhalten. Die Tatsache, dass es nach dem Ausscheiden der beiden Oldtimer keinen Ersatz (oder vielmehr einen sehr teuren Ersatz) geben wird, sollte ein Argument genug sein.
Oded
3
Ich schätze, dass er es vielleicht versucht , aber die meisten selbstbewussten Entwickler würden sich von einer toten Sprache fernhalten. Ich bin mir nicht sicher, wann MS die Unterstützung von VB6 einstellen wird, aber es wird immer schwieriger, Ressourcen zu finden (und das Produktende ist ein weiteres Argument gegen VB6). Ich bin mir nicht sicher, wie viel dies helfen wird, aber studiere: msdn.microsoft.com/en-us/vstudio/ms788708.aspx - 2008 war das Ende der Lebensdauer der IDE. Und ich mag die "Benutzerdefinierte Support-Vereinbarungen sind möglicherweise bei Microsoft erhältlich" - zu welcher Gebühr frage ich mich ...
Oded
1
@Oded Leider berührt keines dieser Argumente wirklich die Tatsache, dass VB.NET als Ersatz für VB6, globale öffentliche Variablen und alles verwendet werden kann. Wie nutzen wir nach der Verwendung von .NET alle Vorteile?
dlras2
1
Vielleicht anhand von Beispielen erklären. Gibt es ein Problem, das in VB6 schwer zu lösen ist und in VB .NET viel einfacher zu lösen wäre? Könnten Sie einige Beispiele aus Ihrer Codebasis auswählen und zeigen, wie sie in .NET in besseren Code umgewandelt werden können, der mit den Funktionen in VB6 nicht möglich wäre?
FrustratedWithFormsDesigner
1
@DanRasmussen VB.NET konnte VB6-Projekte nicht korrekt importieren (noch behoben?). Ein Upgrade ist nicht trivial.

Antworten:

16

Kurze Antwort: Sie können nichts tun, um ihre Meinung anhand der Kriterien zu ändern, die Sie in der Frage aufgeführt haben und die alle technisch sind . Dies ist das Äquivalent einer religiösen Debatte. Der schnellste Weg zum Scheitern besteht darin, ein Argument vorzulegen, das nicht aus Sicht des Publikums, in diesem Fall der Geschäftsinhaber , stammt.

Längere Antwort: Veränderungen im Geschäft werden von einer Sache und nur einer Sache angetrieben. Profitieren Sie vom Endergebnis.

... wie kann ich zumindest meinen Chef davon überzeugen, dass Dinge wie stark typisierte Variablen, benutzerdefinierte Klassen und private Felder keine reine Zeit- und Energieverschwendung sind?

Sie können nicht nur Zeit- und Energieverschwendung sein, sondern vor allem Geld kosten ! Sie müssen quantitativ nachweisen können, dass Ihre Vorschläge im Laufe der Zeit zu einem erheblichen Gewinn führen. Nur zu behaupten, sauberer Code sei "besser" , reicht nicht aus, da die Produktion von sauberem Code viel mehr kostet.

Wenn Sie artikulieren können, wie die Kosten für den Einsatz moderner Technologie führen werden ($COST + X) * TIME = $PROFIT, wo Xeine nicht triviale positive Zahl liegt und TIMErelativ kurz ist, können Sie ein überzeugendes Szenario erstellen.

Eine andere Möglichkeit zur Berechnung des ROI (Return on Investment)

ROI-Formel

Wenn dieser ROI / ROR eine triviale Zahl ist, insbesondere über einen langen Zeitraum, haben Sie auch keinen großen Geschäftsfall.

Wie verdient Ihr Unternehmen tatsächlich sein Geld?

Wie viele Codezeilen? wie viele Kunden? Wie viel Umsatz pro Jahr bringt diese Software? Sind die Einnahmen hauptsächlich Supportverträge? oder neue Lizenzen? Ist der Zielmarkt stabil? expandieren? Vertrag abschließen? Ist die Software ein Verlustführer für ein anderes, viel profitableres Produkt?

Für einen guten Geschäftsmann ist es schwer, das auf dem Tisch liegende Geld zu ignorieren.

Natürlich müssen Sie in der Lage sein, Ihre Aussagen mit harten Fakten zu untermauern. Dies bedeutet, dass Sie in der Lage sein müssen, reelle Zahlen anzugeben, die zeigen, dass Sie das eigentliche Geschäft wirklich verstehen und nicht nur akademische technische Details.

Nicht nur die Profis

$COSTWenn Sie auch eine detaillierte Risikoanalyse durchführen und wissen, was diese Risiken bedeuten würden, wenn sie eintreten würden, können Sie sie davon überzeugen, dass Sie einen realistischen Fall haben und nicht nur jammern, dass Sie VB6 nicht mehr ausführen möchten.

Alten Hunden neue Tricks beibringen

... Was kann ich sagen, um am besten zu betonen, dass der Wechsel zu .NET genau dann ein guter Schachzug ist, wenn sich auch unser aktuelles Programmierparadigma zu ändern beginnt? ...

Das Ändern oder Nicht-Ändern des Programmierparadigmas, um die neue Technologie so idiomatisch wie möglich zu gestalten, ist Teil der Risikoanalyse. Dies ist jedoch erst dann ein separates Argument, wenn Sie bewiesen haben, dass durch eine Änderung in erster Linie erhebliches Geld verdient werden kann.

Geschäftsleute neigen dazu, Geschäftsfälle anzuhören, genau wie Techniker dazu neigen, technische Fälle anzuhören. Alle Ihre Fälle in Ihrer Frage setzen sich für technische Verdienste ein, die in Ihrer Situation bestenfalls akademisch sind.

Prognose

Ich mache hier ein paar Annahmen. VB6-App, kleiner Shop, wenige Entwickler, 2 ältere Entwickler / Geschäftsinhaber verweisen auf eine Nischenmarkt-App, die wahrscheinlich ausgereift ist (Fehler und Workarounds sind bekannt), ziemlich vollständig und relativ stabil, unabhängig davon des "Chaos" ist die Codebasis. Dies lässt mich glauben, dass die kleine Benutzerbasis auch nicht von Jahr zu Jahr dramatisch wächst, was mich zu der folgenden Schlussfolgerung führt.

Dass es wirklich keinen zwingenden geschäftlichen Grund gibt, die technische Richtung mit dieser Anwendung zu ändern. Die Portierung auf VB.Net ist ebenfalls Zeitverschwendung, da Sie nur das Durcheinander haben, aber jetzt mehr davon haben und 2/3 des Entwicklungsteams sich nicht dem Erlernen neuer Funktionen widmen. Viel Glück.

Glorfindel
quelle
2
Leider überwiegen die Kosten für das Umschreiben (plus Schulung plus Erwerb von Fachwissen) in der Regel die Kosten für den Betrieb der App, zumindest kurz- und mittelfristig. Langfristig laufen Sie jedoch Gefahr, dass Ihr Umschreiben selbst möglicherweise in $ next_new_technology umgeschrieben werden muss.
Gbjbaanb
4
+1 religiöse Debatte. Wenn OP in .NET arbeiten möchte, sollte er einen Job in einem .NET-Shop bekommen. Ich würde sagen, dass der Wechsel von VB6 zu .NET in diesem Unternehmen ein großes Risiko mit fragwürdigem Nutzen darstellt.
Kirk Broadhurst
Tolle Antwort, außer dass Sie seinen Teil über "Refactoring ist nahezu unmöglich, und Änderungen erfordern zu viel Durchforsten des Codes und scheinen, wenn sie einmal vorgenommen wurden, immer mehr Löcher einzuführen." Es ist die letzte Aussage, die für das Unternehmen von Wert ist. Der Nachweis, dass sie die Codebasis nicht ändern können, ohne das Geschäftsgeld erheblich zu kosten, ist ein sehr gültiges Argument im Einklang mit Ihrer Antwort. Natürlich müssen die Metriken vorhanden sein, um diese Aussage zu sichern.
@ GlenH7 persönlich Ich denke, was Sie zitieren, ist eine dramatische persönliche Meinung und Rhetorik, weil das OP keine Sorge für etwas anderes zeigt, als seine persönliche Meinung und Agenda voranzutreiben. Meine Antwort ist vorzuschlagen, dass sie nicht darüber nachdenken, was der eigentliche Treiber für Veränderungen sein würde, und dass sie nicht darüber nachdenken oder nachgedacht haben. Mein Punkt ist, dass inkrementelle Änderungen auf lange Sicht, die "teuer" sind, immer billiger sind als das, was sie über den gleichen Zeitraum vorschlagen. Machen Sie, was sie sagten und was Sie zitieren, ein unhaltbares Geschäftsargument.
Einverstanden, dass die Aussage ein gewisses Maß an Rhetorik enthielt. Einige Geschäfte (und nein, sie sind im Allgemeinen nicht die kleinen) verfolgen Fehler / Fluchtwege, sodass es möglich ist, harte Metriken über die Fehler zu generieren. OTOH, die meisten Geschäfte speichern diese Informationen nicht und es ist nichts weiter als ein "Bauchgefühl", das in einer Geschäftspräsentation nicht viel zählt.
11

Ich habe einen Kunden, dessen Flaggschiff-Produkt in VB6 geschrieben und von 3 Personen gewartet wird. Ich bin gekommen, um ihnen zu helfen, weil sie einen Partner hatten, der wollte, dass sie einen Webdienst anrufen. Das ist sehr schwer mit VB6 zu tun, aber einfach mit VB.NET oder C #, und ich habe ihnen eine .NET-Assembly geschrieben, die für VB6 wie eine COM-Komponente aussah, damit sie sie aufrufen konnten. Dann mussten sie jemandem einen Webdienst anbieten. Dann wollten sie ein kleines eigenständiges Dienstprogramm schreiben, das einige Informationen verschlüsseln und entschlüsseln sowie XML analysieren musste. Ich habe ihnen beigebracht, das in .NET zu schreiben. In den letzten 5 Jahren befindet sich immer mehr Code in .NET, obwohl das Flaggschiff-Produkt überhaupt nicht geschrumpft ist. Es gibt Teile davon, die sie hassen - jede App hat sie - und wo sie können, ziehen sie diese Teile heraus (jetzt beginnt das Schrumpfen) und stellen sie in Dienste oder separate Dienstprogramme. Der Rest wird Holus-Bolus in .NET konvertiert. Ja, schlechte Variablennamen und alles - meiner Meinung nach bietet die Umstellung auf .NET viele Vorteile, auch wenn sie ihr aktuelles Programmierparadigma nicht ändern. Diese beinhalten:

  • Sie können das neueste Visual Studio mit besserer Suche, besserem Intellisense, schnelleren Builds usw. verwenden
  • Sie können in ein anständiges Versionsverwaltungssystem (dh nicht VSS) integrieren.
  • Es gibt Bibliotheken, die mit .NET kostenlos geliefert werden und die Dinge wie Verschlüsselung, XML-Analyse, Bildverarbeitung und mehr kurz erledigen
  • Die Internationalisierung und Lokalisierung ist in einem .NET-Projekt viel einfacher (dies hat bei einer Anfrage eines großen kanadischen Kunden, der sowohl eine französische als auch eine englische Version benötigen würde, möglicherweise den Ausschlag für meinen Kunden gegeben).
  • Mit kostengünstigen Steuerungsbibliotheken (Telerik, Infragistics, ComponentOne usw.) erhalten Sie erstaunliche Funktionen fast kostenlos
  • Es wird viel einfacher sein, vorübergehende Hilfe zu finden, wie ein Sommerstudent, wenn sich die Zeit, die Sie für das Unterrichten von VB6 aufgewendet haben, nicht lohnt (besprechen Sie nicht, wie Sie es finden, wenn Sie es einem neuen Vollzeitbeschäftigten beibringen).
  • Ihre Anwendung ist UAC-fähig, sodass sie unter Vista, 7 und 8 besser ausgeführt werden kann. Sie muss nicht im XP-Kompatibilitätsmodus ausgeführt werden

Es gibt noch mehr, aber das reicht doch?

Die Frage der Programmierparadigmen, der starken Typisierung, des Compilers ist Ihr Freund, die Kapselung ist Ihr Freund und so weiter ist für mich (und ich werde dafür bezahlt, dass ich diese Meinungen habe) völlig getrennt. Wenn du auf diesem Hügel sterben willst, mach weiter, aber du wirst mit einer offenen Kopie von VB6 sterben.

Kate Gregory
quelle
Was meinst du mit deinem abschließenden Absatz?
dlras2
6
Das "Wechseln zu .NET" und "Lasst uns alle auf andere Weise programmieren" sind unterschiedlich, und wenn Sie sich für den Kampf gegen den zweiten entscheiden, ist es nicht nur unwahrscheinlich, dass Sie Erfolg haben, sondern Sie werden sie mit ziemlicher Sicherheit auch nicht verschieben. NET mit diesem Ansatz. Ich bin damit einverstanden, dass sie anders programmieren sollten. Aber der beste Weg zu .NET ist "wie das, was Sie jetzt haben, aber mit Schokoladensauce und Streuseln!"
Kate Gregory
Ich verstehe den Vorteil, sie als unterschiedliche Probleme zu betrachten, aber das Problem ist, dass die Annäherung als separate Probleme einfach ebenso nicht wartbare Programme sicherstellt, nur in .NET.
dlras2
1
Sie werden bessere Anwendungen (bessere Steuerelemente, mehr Funktionen) und einen besseren Prozess (eine Quellcodeverwaltung und möglicherweise sogar die Verfolgung von Arbeitselementen) sowie Entwickler haben, die jetzt erkennen, dass dies anders möglich ist und dass sich der Schmerz des Änderns lohnt es wegen dieser großen Vorteile. Sie werden viel empfänglicher für das nächste sein, was Sie von ihnen verlangen. Und "nicht wartbar" ist nicht binär. Der Code wird nicht großartig sein, aber die Situation wird immer noch besser sein als sie war. Sie haben auch Glaubwürdigkeit bewiesen.
Kate Gregory
8

Ich habe vor einigen Jahren mit einem VB6-Projekt begonnen (benutzerdefiniertes ERP-System des Unternehmens) und es langsam auf .NET migriert. Es ist irgendwo halb fertig.

Zuallererst ist die Konvertierung von VB6 zu VB.Net fast immer eine schlechte Idee (und ich habe viel darüber recherchiert). Es ist einfach zu viel anders. Wenn Ihr Chef der Meinung ist, dass VB.Net "genau wie VB6" ist, irrt er sich völlig und Sie müssen seine Einstellung schnell ändern.

Meine Strategie bestand darin, die beiden Codebasen getrennt zu halten und getrennt zu verwalten und dann langsam ganze Module von VB6 nach .NET zu verschieben, jedoch nur dann, wenn eine wesentliche Änderung an diesem Modul bevorstand, sodass wir einen Teil der Kosten amortisieren konnten. Trotzdem ist das Umschreiben eine große, teure und riskante Aufgabe.

Es gibt zwei Möglichkeiten, vorhandenes VB6 in neuen .NET-Code zu integrieren (und das werden Sie wahrscheinlich noch sehr lange tun, also sollten Sie sich besser an die Idee gewöhnen). Der erste Weg, dies zu tun, bestand darin, kleine Module in .NET zu schreiben und dann die Hauptanwendung von VB6 die ausführbare .NET-Datei starten zu lassen, indem einige Befehlszeilenparameter übergeben wurden. Dies hat funktioniert, aber seien Sie gewarnt, dass .NET eine Startzeit von 4 bis 10 Sekunden hat, sodass Sie nur begrenzt in der Lage sind, dies zu tun.

Sobald es wirklich schmerzhaft wurde, drehte ich die Strategie um und verwendete die Methode aus diesem CodeProject-Artikel , um die vorhandenen VB6-Formulare in meiner .NET-Hauptanwendung anzuzeigen. Nachdem ich diesen Weg eingeschlagen hatte, konnte ich nur einen Treffer für die .NET-Startzeit verzeichnen und ClickOnce für die Bereitstellung verwenden. Dies war ein Glücksfall im Vergleich zur vorherigen Bereitstellung der VB6-App.

Das heißt, hier sind die Vorteile, die ich in .NET gegenüber VB6 finde:

  • Bessere Persistenz-Frameworks (NHibernate, EntityFramework, Linq2Sql usw.)
  • LINQ (Ich kann gar nicht genug betonen, wie wichtig das ist)
  • Generika!
  • Lambda-Syntax (löst eine ganze Klasse von Problemen wie "Loch in der Mitte" elegant)
  • Ähnlich Actionund FuncTypen
  • Reflexion (etwas, das Sie selten verwenden, aber wenn Sie es tun, ist es riesig)
  • Viel bessere Unterstützung beim Testen von Einheiten (natürlich bezweifle ich, dass Sie Ihre anderen Mitarbeiter zum Testen von Einheiten überzeugen werden, aber Sie sollten dies tun)
  • ReSharper (und andere Refactoring- / Profiling-Tools) (10x besser als MZ-Tools)
  • ClickOnce- und / oder Setup / Installer-Projekte
  • Windows-Dienstprojekte
  • Echte objektorientierte Unterstützung (VB6 basiert auf COM und ist in dieser Abteilung wirklich schlecht.)
  • Statische Eingabe
  • In XML-Unterstützung gebacken
  • WPF und Windows Forms (die Steuerelemente von VB6 sind sehr einschränkend)
  • WCF
  • Viel mehr Beispielcode online
  • Ausnahmen (die Fehlerbehandlung von VB6 ist im Vergleich absolut schrecklich)
  • Integration der Quellcodeverwaltung von Visual Studio
  • Decimal Typ (VB6 hatte nie einen erstklassigen Dezimaltyp, obwohl es CDec hat)
  • Erstklassige Unterstützung für Guid
  • Erstklassige Unterstützung für 64-Bit-Ganzzahlen
  • Bessere Sammlungsbibliotheken
  • ReportViewer
  • Multithreading, aufgabenparallele Bibliothek

Nachteile von VB6:

  • Sie werden eine Aufführung bemerken. Es könnte nicht genug sein, sich Sorgen zu machen, aber vertrau mir, du wirst es bemerken. VB6 wird schließlich zu nativem Code kompiliert.

Um fair zu sein, hier sind einige Nachteile der Wartung einer kombinierten VB6 / .NET-Lösung:

  • Verwalten von zwei Datenzugriffsebenen (vorausgesetzt, Ihre VB6-App verfügt tatsächlich über eine)
  • Zusätzliche Verkabelung, um Dienste / Formulare / etc. von einer Seite zur anderen
  • Doppelt so viel Komplexität / Architektur, um im Kopf zu bleiben

Nun, wie Sie angedeutet haben, sollten Sie Ihre Architektur wirklich von Grund auf neu erstellen, wenn Sie anfangen, Code in .NET zu schreiben. Es hört sich jedoch so an, als ob keiner der Mitarbeiter in Ihrem Unternehmen mit der .NET- und / oder Java-Programmierwelt vertraut ist. Daher stammen viele der Muster und Praktiken, die für Frameworks großer Unternehmen üblich sind.

Wenn Sie jemanden nehmen, der es gewohnt ist, eine Schaltfläche in ein Formular zu ziehen, darauf zu doppelklicken und einige SQL-Zeichenfolgen direkt in den Click-Event-Handler zu schreiben, und das hat für ihn funktioniert, ist es wirklich schwierig , ihm einen Vorteil gegenüber dem Folgen von SOLID zu verschaffen Design-Prinzipien. Wenn Sie dagegen in die Kugel beißen und entscheiden, dass der gesamte neue Code zu 90% oder mehr durch automatisierte Komponententests abgedeckt wird, werden Sie schnell feststellen, dass dies nur dann wirklich schwierig ist, wenn Sie die SOLID-Entwurfsprinzipien anwenden.

Sie müssen sich also die Realität der Situation genau ansehen. In meinem Fall war ich der einzige Programmierer, und ich war entschlossen, den gesamten neuen Code einem Unit-Test zu unterziehen, obwohl ich keine Erfahrung damit hatte. Ich kann gar nicht genug betonen, wie sehr sich dies negativ auf das auswirkte, was ich in der ersten Woche, sogar in den ersten Monaten, erreichen konnte. Trotzdem war ich entschlossen, dies zu tun, und ich hatte ein Buy-In vom Management. Die meisten Menschen haben diesen Luxus nicht. Jetzt habe ich viel Code und habe gerade ein umfangreiches Refactoring fast ohne Probleme abgeschlossen.

Realistisch gesehen werden Sie keine Komponententests durchführen, was bedeutet, dass es schwieriger ist, Prinzipien wie die Abhängigkeitsinjektion für Ihre Teamkollegen zu rechtfertigen. Sie müssen .NET nicht nur in architektonischer Hinsicht verkaufen . Sie müssen sich auf eine bessere Bibliotheksunterstützung und bessere Tools konzentrieren. Das ist das einzige, was mitschwingen wird. Ich würde in Ihrer Demo Folgendes vorschlagen:

  • Erstellen Sie ein Windows Forms-Projekt (halten Sie sich von WPF und xaml fern - es ist zu verblüffend)
  • Stellen Sie eine Verbindung zu einer SQL-Datenbank her (einige Testdatenbanken)
  • Verwenden Sie Linq2Sql oder EntityFramework, um ein Datenmodell dafür zu generieren
  • Erstellen Sie eine Repository-Klasse mit einer Methode zum Zurückgeben einer Liste von Entitäten
  • Schreiben Sie eine Abfrage in dieser Methode mit linq und weisen Sie auf die Intellisense hin
  • Weisen Sie darauf hin, dass linq für alle Objekte funktioniert, nicht nur für Entitäten
  • Zeigen Sie, dass beim Ändern der Datenbank und beim erneuten Generieren des Modells ein Kompilierungsfehler angezeigt wird
  • Legen Sie ein DataGridViewim Hauptfenster ab
  • Demonstrieren Sie die Datenbindung, indem Sie das Raster mit den Entitäten aus dem Repository füllen
  • Weisen Sie auf all die coolen Dinge im Raster hin, die so viel besser sind als VB6
  • Erstellen Sie eine .rdlc-Datei (Bericht)
  • Erstellen Sie einen einfachen Bericht in Visual Studio
  • Legen Sie einen Berichts-Viewer im Fenster ab und rendern Sie den Bericht im Berichts-Viewer
  • (Natürlich müssen Sie ReportViewer installiert haben und haben dies alles zuerst geübt.)
  • Überlegen Sie sich ein "Loch in der Mitte" -Problem und demonstrieren Sie die Lösung, indem Sie eine Methode erstellen, die a Actionals Parameter verwendet. Tun Sie dies zuerst, indem Sie eine andere Methode als Parameter übergeben, und lassen Sie sich dann überraschen, indem Sie einen anonymen Delegaten mit Lambda-Syntax übergeben
  • Demonstrieren Sie Generika mithilfe der Klassen List<T>und Dictionary<T1,T2>Collection und zeigen Sie, wie stark typisierter Code erstellt wird (VB6 enthält ähnliche Funktionen, ist jedoch dynamisch typisiert).
  • Schreiben Sie eine foreachpeinlich parallele Schleife, System.Diagnostics.Stopwatchmessen Sie die Ausführungszeit und verwenden Sie dann die Task-Parallelbibliothek, um die Schleife in eine Parallel.ForeachSchleife umzuwandeln und die Beschleunigung zu demonstrieren, vorausgesetzt, Sie befinden sich auf einem Multi-Core-Computer.
  • Demonstrieren Sie die Fähigkeit, einen globalen Ausnahmebehandler hinzuzufügen (dies ist etwas, was VB6 nicht kann).

Das würde ich tun.

Scott Whitlock
quelle
1

Es scheint mir, dass dies eine Situation ist, in der Sie Ihren Politikerhut aufsetzen müssen, anstatt einen zu programmieren. Sie müssen sehr darauf achten, wie Sie argumentieren und dass Sie Ihr Publikum nicht verärgern. Stellen Sie sicher, dass Sie die Vorteile von .Net zeigen, anstatt die Nachteile von VB zu zeigen. Wenn Sie die Nachteile von VB argumentieren, werden Ihre Mitarbeiter in die Lage versetzt, ihre Entscheidungen zu verteidigen und sie zu zwingen, zuzugeben, dass eine Sprache, in die sie viel investieren, eine schlechte Sprache ist. Zeigen Sie ihnen stattdessen, wie die Umstellung auf .NET die ihnen zur Verfügung stehenden Tools erweitert und ihnen das Leben erleichtert.

Mein idealer Weg, um dieses Argument vorzubringen, wäre, eine Aufgabe oder einen Code zu finden, über den sich jeder ständig beschwert, und ihn mit .NET zu beheben. Ich bin mit VB nicht besonders vertraut, aber hier ist eine kurze Liste lästiger Aufgaben, die wahrscheinlich durch die Verwendung von .NET anstelle von VB erleichtert würden.

  • String-Manipulation
  • XML-Analyse
  • Suchen / Matching / Regex
  • Mathematik (neuere Sprachen haben normalerweise schnellere und umfassendere Mathematikbibliotheken)
  • GUI Gebäude / Design

Wählen Sie eine der oben genannten Aufgaben oder eine andere Aufgabe aus, die für die Projekte spezifisch ist, an denen Sie normalerweise arbeiten, und setzen Sie sich mit ihnen zusammen und schreiben Sie von Grund auf Code, der das Problem schnell und einfach löst. Das tatsächliche Anzeigen des Prozesses zum Schreiben des Codes zeigt die Tools, die neuere Versionen von VS auf den Tisch bringen, und liefert den Beweis, dass die Umstellung auf .NET das Leben von niemandem erschwert.

Wenn Sie darauf eingehen, müssen Sie unbedingt Ihre Hausaufgaben machen. Wenn Sie sich nicht sicher sind, wie Tools funktionieren, oder wenn der Code nicht richtig funktioniert, können Sie sie niemals für sich gewinnen.

TwentyMiles
quelle
0

Als erstes sagen Sie, dass VB6 von Microsoft nicht mehr unterstützt wird. Während Sie es am Laufen halten können, müssen Sie verstehen, dass seine Optionen auf lange Sicht gleich Null sind. Ich weiß nicht einmal, ob VB6-Apps unter Windows8 ausgeführt werden oder ob die IDE selbst unter Win8 ausgeführt wird.

Sie müssen also irgendwann effektiv umschreiben, und wenn dies der Fall ist, können Sie genauso gut jetzt und nicht später beginnen, um genügend Zeit zu haben, um herauszufinden, welche neue Technologie Sie verwenden möchten (während VB.NET ideal klingt). Dies ist Ihre Gelegenheit, etwas Neues auszuprobieren, z. B. die App auf iPads zum Laufen zu bringen.

Kurzfristig können Sie das Problem ein wenig abmildern, indem Sie neue Abschnitte als COM-Komponenten für die vorhandene App einführen. Hoffentlich bleiben diese Komponenten erhalten, wenn das unvermeidliche Umschreiben erfolgt.

Ich würde mich nicht mit technischen Argumenten darüber beschäftigen, warum .NET besser als VB6 ist. Sie werden dort auf ein verlorenes Argument stoßen, Technologie an sich löst niemals Probleme. Es liegt an Ihnen, wie Sie diese Technologie anwenden, und wenn die VB6-App Probleme für Sie löst, gibt es kein Argument, das Sie beantworten können. Sie können über die einfache Wartung oder die Verfügbarkeit erfahrener Mitarbeiter sprechen. Wenn Sie dies jedoch tun, geben Sie zu, dass Ihre vorhandenen Mitarbeiter keine Fachkenntnisse in der neuen Technologie haben und geschult werden müssen, und nehmen sich dann einige Zeit, um sich vollständig auf den neuesten Stand zu bringen damit. Sie müssen auch die Fragen beantworten, wie viele Umschreibungen schlechter ausfallen als das ursprüngliche Projekt (manchmal aufgrund mangelnden Fachwissens, manchmal aufgrund zu großartiger Designs).

gbjbaanb
quelle
MS wird VB6 auf Intel / AMD-PCs unter Windows 8 unterstützen. Sie können keine Metro-Apps in VB6 schreiben, aber Sie können auch keine Metro-Apps in .NET schreiben. Beide basieren auf Win32. Mindestens Code geschrieben in C # für .NET sollte auf U - Bahn leichter sein , in dem Hafen WinRT zu laufen, aber rechnen Sie nicht es einfach wieder aufbauen zu sein.
Scott Whitlock
0

Geben Sie ihm die Analogie "altes Auto neu gegen Auto":

Ja, beide bringen Sie wahrscheinlich an Ihr Ziel. Das neue Auto braucht jedoch keine Kurbel , es braucht keine Drossel , es braucht keine Karten , seine Räder blockieren nicht , wenn Sie scharf bremsen, und schließlich ist es weitaus wahrscheinlicher, dass Sie von einem Autounfall weggehen .

  • VB6 ist ein Vermächtnis, es ist das neue COBOL
  • .NET hat bessere Frameworks
  • .NET hat bessere Werkzeuge
  • .NET hat eine bessere Leistung
  • .NET hat eine bessere IDE
  • .NET bietet eine bessere Sprachunterstützung
  • .NET bietet bessere Funktionen
  • .NET bietet eine bessere Community-Unterstützung
Dunkle Nacht
quelle
7
Autoanalogien scheitern normalerweise, und Ihre ist nicht anders. Eine Sache, die ein altes Auto hat, die ein neues Auto nicht hat, ist, dass dafür bezahlt wird! Wenn Sie ein Taxi besäßen und es bezahlt wurde und es Ihnen mehr Geld einbrachte als die Wartung, und ein neues Auto würde Sie mehr Geld kosten als es zu verdienen, was Sie als Geschäftsmann lieber hätten?
2
@JarrodRoberson Es ist bezahlt, aber sie neigen dazu, häufiger zu bremsen, und nach einer Weile wird nicht mehr funktionieren. Auto-Analogien sind großartig. :)
Steven Jeuris
1
Eigentlich ist diese Auto-Analogie gut. OPs Chef hat das Taxi und das OP sollte das berücksichtigen, während es sich ihm nähert. Ein vollständiger Wechsel kann nicht über einen Tag erfolgen, aber beginnen wir, Bits zu verschieben und Teile nacheinander zu wechseln.
ZJR
1
Der Geschäftsinhaber hat dies selbst entworfen und gebaut . Es hat sich höchstwahrscheinlich um ein Vielfaches bezahlt gemacht, und die Wartung ist in jeder Hinsicht kostenlos, da es nur 3 Entwickler gibt und er einer von ihnen ist. Wie ich bereits sagte, sind Autoanalogien schrecklich, besonders dies, und Sie machen meinen Standpunkt für mich mit Ihren Argumenten deutlich, die in geschäftlicher Hinsicht völlig falsch sind. Neue Software wird ihm bestenfalls Jahr für Jahr einen viel geringeren Gewinn bringen und ihn im schlimmsten Fall für einen unbestimmten Zeitraum Geld verlieren.
2
Anwendungen haben keine Verschleißentropie wie physische Gegenstände, sie verkümmern auch nicht von Natur aus , tragen sich also nicht ab und brechen unabhängig von ihrer Verwendung nicht zusammen, sodass Analogien zu physischen Gegenständen, insbesondere Autos, nicht zutreffen. Eine Anwendung wird für immer ausgeführt, solange sie ihrem Zweck dient. Eine Firma, für die ich vor einigen Jahren gearbeitet habe, hatte eine alte MS-DOS-basierte Maschine, die die Kartenleser an den Türen steuerte. Die Idee, dass Software abgenutzt ist, ist albern. Das heißt, ein guter Plan für das Lebensende sollte immer vorhanden sein. Auch wenn dieser Plan darin besteht, die Software niemals neu zu schreiben.
0

Zunächst einmal denke ich, dass Sie die Frage ändern sollten (nicht bei Stackexchange, sondern in Ihrem Unternehmen). Es ist nicht so sehr der Grund, warum .Net besser ist als VB6, sondern eher, da VB6 nicht mehr unterstützt wird , ist es an der Zeit, weiterzumachen, aber wohin. Fragen Sie die Stakeholder, was diese "neue" Technologie sein soll. Vielleicht ist es nicht .Net.

Es hört sich jedoch so an, als müssten Sie auf eine neue Technologie umsteigen UND einige gute Programmiermuster und -praktiken anwenden. Die Antwort auf den zweiten Teil ist viel schwieriger. Sie müssen dies wahrscheinlich in einem kleinen Teil der Anwendung tun und beweisen, dass es sich lohnt, das heißt, es ist stabiler, einfacher zu warten usw.

dunkler Fader
quelle
-1

Sagen Sie Ihren Vorgesetzten, sie sollen zwei Suchanzeigen schreiben. Eine für C # -Entwickler. Eine für VB6-Experten. Bring sie da raus. Ergebnisse vergleichen.

Erik Reppen
quelle