Moderne IDEs haben eine Menge Tricks parat, um beim Schreiben, Umgestalten und Suchen von Code zu helfen. All das ist sehr hilfreich, aber selten sieht eines von ihnen wie eine echte "Magie" aus und lässt mich denken: "Wow! Wie hat es das herausgefunden?"
Können Sie beeindruckende Funktionen für die IDE-Code-Automatisierung (oder andere) nennen, die Sie beim ersten Mal in den Bann gezogen haben?
ide
automation
serg
quelle
quelle
Antworten:
Rückwärts-Debuggen
Mit Visual Studio 2010 (und jetzt 2012) kann ich mit IntelliTrace rückwärts debuggen .
Nie wieder muss ich den Moment wieder erleben, in dem ich F10 ein Mal zu oft drückte und das Debuggen neu starten muss.
quelle
Code-Vervollständigung
Wenn Sie nur einen Texteditor gesehen haben, ist dies beeindruckend
quelle
Die Fähigkeit von ReSharper, zu erraten, was ich für eine Variable mit dem Namen haben möchte, erstaunt mich immer wieder. Hier ist ein sehr einfaches Beispiel, aber Sie bekommen die Idee.
quelle
foreach(var matche in regex.Matches(str))
. Setztmatche
auchobject
eher als einMatch
, nicht sehr nützlich.MatchCollection
es sich um eine untypisierte Sammlung handelt. Funktioniertvar
hervorragend für ordnungsgemäße Sammlungen . (Ich mag es aber immer noch nicht)Ich war sehr beeindruckt von den Refactoring- Tools von Eclipse, als ich sie zum ersten Mal sah. Die Fähigkeit, Methoden (die beim Erlernen von besserem Design häufig vorkommen) aus einem großen Teil des Codes zu extrahieren und alles für mich zu erledigen, war ziemlich cool.
quelle
Code-Blasen. http://www.andrewbragdon.com/codebubbles_site.asp
Ich liebe Visual Studio und Eclipse für die Tools, mit denen ich Code ändern kann, aber Code Bubbles begeistert mich wirklich, dass ich in meinem Code navigieren und ihn anzeigen kann. Schade, dass es nicht öffentlich verfügbar ist = - {
quelle
Die beeindruckendste Programmierumgebung, von der ich je gehört habe, ist das Genera-Betriebssystem.
Sie können auf jedes Widget im Fenstersystem klicken und eine vollständige Anzeige des Quellcodes und der Dokumentation des Elements erhalten. Als dynamische Programmiersprache (Lisp) können Sie die Quelle des Widgets im Handumdrehen bearbeiten.
ZMACS aus der Lisp Machine-Welt gilt nach wie vor als besserer Editor als Emacs, eine Editorumgebung ohne Peer.
quelle
Visuelle Darstellung der Programmstruktur (Programme / Funktionen / Routinen / ...)
quelle
Die Fähigkeit von ReSharper zur Umgestaltung. Ich kann sagen, dass ich hier hinter der Kurve stehe, da ich glaube, dass Java mit Eclipse diese Art von Funktionalität schon seit einiger Zeit bietet, aber ich arbeite nicht regelmäßig mit Java.
Die Delta-In-Fähigkeit, die ReSharper zu Visual Studio hinzufügt, ist so groß, dass es unglaublich ist. Ich weiß, dass ich wie eine Anzeige klinge, aber ich glaube nicht, dass ich jemals wieder eine Standardinstallation von Visual Studio ohne ReSharper verwenden könnte.
Allgemeiner gesagt, würde ein semantisches Verständnis des Codes einem normalen alten Texteditor jeden Tag die Nase voll schlagen. Dies führt zu Dingen wie "Verwendung von Variablen finden" oder "Inline-Funktion" oder "Möglichkeit, idiomatische Muster zu verwenden" usw.
quelle
Smalltalks Debugger:
In Smalltalk ist es völlig normal, die meiste Zeit damit zu verbringen, Code aus dem Debugger heraus zu schreiben.
(Ich erinnere mich, dass ich überwältigt war, als ich eine Methode ausgeführt, etwas falsch gesehen, geändert und die Methode erneut ausgeführt habe, ohne die Anwendung damals mit Visual Age für Java neu gestartet zu haben ... weil VA4J in Visual Age für Smalltalk geschrieben wurde.)
Smalltalks Methodenfinder
Mit Method Finder können Sie fragen: "Welche Nachricht kann ich senden, um diese Parameter zu übernehmen und dieses Ergebnis zu erhalten?" Fragen Sie es
'abc'. 'def'. 'abcdeb'.
und es sagt Ihnen'abc' , 'def' --> 'abcdef'
. Fragen Sie es#(0 1 2 3)
und es heißt#(0 1 2 3) sum --> 6
. * Absender von, Implementierer von allem, um alle (*) Absender einer Nachricht oder alle Objekte zu finden, die diese Nachricht implementieren.(*) Außer wenn Sie beispielsweise zur Laufzeit Nachrichtennamen erstellen:
self perform: (#foo, #bar)
um sich selbst die Nachricht zu senden#foobar
- in diesem Fall wissen Sie, was Sie tun, und es macht Ihnen nichts aus, wenn Sie sich auf Ihren eigenen Petard setzen.quelle
Whyline
Whyline für Java hat mich sehr beeindruckt, als ich es sah. Es ist ein dynamisches Analysetool, mit dem Sie Fragen zur Programmausgabe stellen können, nicht nur zu Text, sondern auch zu Grafiken. Sie können beispielsweise fragen, warum diese Linie rot war. oder "Warum wurde die Malmethode nicht aufgerufen?"
Es funktioniert, indem Sie Ihr Programm instrumentieren und einen Lauf aufzeichnen. Angenommen, es gibt einen Fehler, den Sie reproduzieren können. Sie instrumentieren Ihr Programm mit Whyline, führen Ihr Programm in Whyline aus, um den Fehler zu reproduzieren, und wenn Sie das Programm beenden, können Sie Whyline verwenden, um den Ausführungsverlauf zu überprüfen.
Diese Aufnahme und Wiedergabe ist nicht neu, aber wie Whyline sie implementiert, ist ziemlich raffiniert. Sie können den Verlauf nach bestimmten Ereignissen anzeigen (z. B. nur Mausbewegungsereignisse oder nur Tastendruckereignisse). Außerdem wird die Ausgabe mit dem Teil des Programms verknüpft, mit dem sie gedruckt wurde, sodass Sie von der Ausgabe zum Code navigieren können.
Zum Arbeiten wird das Programm-Slicing verwendet, sodass Sie sich auf die Teile des Codes konzentrieren können, die tatsächlich relevant sind. CMU hat jetzt ein Patent darauf, und ich weiß nicht, was ihre Pläne sind, aber ich hoffe, wir können mehr davon in der Produktion sehen. Es ist ein Gedächtnisschwein, aber das ist wahrscheinlich, weil es ein Prototyp ist und sich verbessern kann.
Sie sollten die Demo online sehen, aber Sie sollten sie auch selbst ausprobieren, um die volle Erfahrung zu erhalten. Die Online-Demos unterbieten die Idee.
quelle
Ich denke, das beeindruckendste IDE-Feature, das ich je gesehen habe, ist SyncEdit , das AFAIK nur in Delphi zur Verfügung stellt.
quelle
Was ich in einer IDE sehen möchte, sind die folgenden Funktionen:
sheet[A3]
) und Zeichnungen in den Code und den Zugriff darauf wie auf jede Variable.if
tabellarisch (noch im Link suchen).quelle
Typprüfung für dynamische Sprachen
Solange Ihr Code nicht zu "meta" wird, sollte eine IDE für Ruby oder Python eine Hintergrundaufgabe ausführen können, die:
Ich habe noch keine IDE gesehen, die dies tut.
quelle
Ich bin ein großer Fan der alten Klick-Mehrzeilen-Fähigkeit in Vs2010, das Beste, was ich über die neue Version gefunden habe.
quelle
Eclipse Auto Build ist die Funktion, die ich am meisten bewundere ... vor 7 Jahren. Jetzt halte ich es für selbstverständlich.
quelle
Xcode 4 behebt Semikolons und Tippfehler und zeigt anhand von Pfeilen an, wie ein Fehler aufgetreten ist.
Z.B:
Ein Pfeil von
[a release]
bis zeigt[a length]
an, warum Sie ihn nicht verwenden können[a length]
.quelle
Codevorlagen und -erweiterungen wie DevExpress CodeRush. In C #
DependencyProperty
ist das Erstellen von a ein großer Aufwand, da die Syntax sehr ausführlich sein kann. Wenn Sie jedoch einfach "dp" eingeben, wird ein Snippet angezeigt, in dem Sie Typ, Name und Standardwert eingeben und alles andere - einschließlich - erledigt ist Hinzufügen aller erforderlichen "using" -Anweisungen und möglicherweise von Projektreferenzen, wenn Speicher zur Verfügung steht.Der Vorteil besteht darin, dass Sie Ihre eigenen Vorlagen für Code erstellen, den Sie häufig wiederverwenden oder neu schreiben, z. B. einfache Implementierungen von
INotifyPropertyChanged
Eigenschaften. Geben Sie der Vorlage einfach den Namen und den Typ der gewünschten Eigenschaft (falls diese nicht von einem anderen Expander verarbeitet wurde) und der Rest wird erledigt, einschließlich der Erstellung der Sicherungsvariablen.quelle
Pex macht eine ziemlich coole automatisierte Generierung von Komponententests . Es zeichnet Ihren Code nach, ermittelt Verzweigungspunkte, generiert mithilfe eines bedingten Lösers Eingaben, die auf jeden möglichen Zweig zutreffen, und lässt Sie dann die Ergebnisse als wiederholbare Komponententests exportieren. Es kann komplexen Code für den Umgang mit Zeichenfolgen demütigen.
quelle
In Eclipse SEtters und Getters automatisch generieren erstellen Sie auf ähnliche Weise Methoden in implementierten Klassen über eine Schnittstelle
quelle
Die Unterstützung von JPA durch IntelliJ Idea
Erwähnen Sie, dass Sie eine DatabaseEntity haben:
jetzt hast du ein paar JPA-Abfragen
Nach einiger Zeit sehen Sie, dass Sie in Ihrer Entität einen Tippfehler gemacht haben und sich dazu entschlossen haben, lasname in lastName umzugestalten .
Diese IDE wird auch die JPA-Abfrage umgestalten.
quelle