Die Entwicklung für das Java-Ökosystem hat mir viele Jahre lang die Rechnungen bezahlt. Seit einigen Jahren arbeite ich jedoch hauptsächlich im .Net-Bereich. Anfangs bestand mein Einstieg in die .Net-Welt darin, VB.Net-Code zu schreiben und zu pflegen. VS bot fast die gesamte nette Intellisense-Unterstützung, die ich nach jahrelanger Arbeit mit der Eclipse/Java-Kombination gewohnt war. Schließlich beschloss mein Arbeitgeber, neue Entwicklungen in C# durchzuführen. Mein anfänglicher Eindruck von der Intellisense-Unterstützung für C# war weniger als glänzend. Manchmal scheint es, als ob VS keinen Hintergrund-Compiler für C# hat, aber gelegentlich tut es etwas Intelligentes, was darauf hindeutet, dass es eine Hintergrundverarbeitung gibt, aber nicht genug, um die Produktivität wirklich sinnvoll zu steigern. Gibt es einen vernünftigen technischen Grund für diese Diskrepanz bei der Intellisense-Unterstützung zwischen den beiden Sprachen?
Antwort
Zu viele Anzeigen?Zwischen C# und VB klafft schon seit geraumer Zeit eine Lücke. VB generiert eine Menge Code für Sie. Wenn Sie zum Beispiel nach einer "If"-Anweisung die Eingabetaste drücken, wird automatisch das "Then" am Ende der Zeile hinzugefügt, wenn Sie es ausgelassen haben, und die Zeile wird mit dem "End If"-Teil abgeschlossen. In C# müssen Sie die einleitenden und abschließenden geschweiften Klammern {} selbst hinzufügen.
VB hatte schon lange vor C# eine Hintergrundkompilierung. In der Tat war das einer der wichtigsten Faktoren für die Verwendung von ReSharper, die diese Funktionalität zur Verfügung gestellt. Doch mit VS 2008 / .NET 3.5 SP1 hat sich das alles geändert. Sie können Scott Gu's Beitrag darüber lesen aquí aber ich werde den relevanten Teil einfügen:
"Der C#-Code-Editor identifiziert und zeigt jetzt und zeigt rote Kringelfehler für viele semantische Code-Probleme an, die bisher eine explizite Kompilierung erforderten, um identifizieren. Zum Beispiel, wenn Sie versuchen deklarieren und einen unbekannten Typ im C#-Code-Editor einen unbekannten Typ zu deklarieren und zu verwenden, wird kein Kompilierfehler, bis Sie einen Build durchführen. Jetzt, mit SP1, sehen Sie sofort rote Schnörkelfehler sofort (kein explizite Kompilierung erforderlich)."
Die Verwendung von CodeRush oder ReSharper verbessert definitiv die Erfahrung mit der automatischen Vervollständigung gängiger Anweisungen, die einem VB-Entwickler das Gefühl geben, dass es einen nahtlosen Übergang gegeben hat.
Das geht zwar nicht ganz auf die technischen Bedenken ein, aber die Entwicklungsteams sind unterschiedlich und haben nicht unbedingt dasselbe getan. Mit anderen Worten: Es wird wahrscheinlich keinen gemeinsamen Ansatz geben. Dieser Blogbeitrag Auszug eines technischen Leiters des VB-Teams, unterstützt dies:
Die "Hintergrundkompilierung" ist die Funktion in VB, die Ihnen einen vollständigen Satz von Fehlern anzeigt, während Sie tippen. Leute, die zwischen VB und C# hin und her wechseln VB und C# hin und her wechseln, bemerken dies, aber reine VB Entwickler wissen vielleicht nicht, dass andere Sprachen wie C# nicht immer eine Intellisense nicht immer zu 100% korrekt ist und nicht immer alle Fehler anzeigen, die Fehler, die in Ihrem Code vorhanden sind. Dies liegt daran, dass ihre Intellisense-Engines separate, verkleinerte Compiler sind die keine vollständige Kompilierung im Hintergrund Hintergrund. VB, auf der anderen Seite, kompiliert Ihr gesamtes Projekt von von Anfang bis Ende, während Visual Studio im im Leerlauf, was uns erlaubt, sofort sofort die Aufgabenliste mit vollständig genauen Fehlern und ermöglicht es uns Ihnen eine absolut genaue Intellisense.
Ein letzter Hinweis ist die aktuelles Channel9-Interview mit dem Group PM des C#/VB/F#-Teams, Luca Bolognese, in dem er betonte, dass die Sprachen nicht mehr in unterschiedliche Richtungen abschweifen, sondern ihre Gemeinsamkeiten ausbauen werden. Es sieht also so aus, als ob die Zukunft große Dinge bereithält!
2 Stimmen
Die einzigen Probleme, die ich gefunden habe, sind, dass C# eine Sprache ist, die Groß- und Kleinschreibung beachtet, so dass ich es manchmal nicht richtig auslöse. Können Sie ein Beispiel für das, was Sie meinen, posten?
2 Stimmen
Es ist alles über VB.NET hat den Hintergrund Kompilierung von Anfang an.
1 Stimmen
C#'s Intellisense aktualisiert sich nach einer Quellcode-Bearbeitung, sogar vor einem Build/Recompile; deshalb habe ich mich gefragt, ob der Rechner des Auftraggebers aus irgendeinem Grund einfach langsam ist.
0 Stimmen
Ich finde den neuen Titel viel klarer.