Bisher verwende ich Eclipse seit einigen Jahren und habe die meiste Zeit damit verbracht, Python (Installation des Pydev-Plug-Ins) und C (Installation des CDT-Plug-Ins) zu schreiben.
Kürzlich habe ich von einem Freund von PyCharm und seiner neuen kostenlosen Community-Version logr gehört. Dieser Freund von mir nutzt Eclipse schon seit langem und lobt PyCharm sehr, daher habe ich beschlossen, PyCharm zumindest zu versuchen, wenn ich von zu Hause aus arbeite. Bisher habe ich mich darin verliebt und nutze PyCharm sogar in meiner täglichen Arbeit (die Community-Version ist von Apache2 lizenziert).
Im Folgenden werde ich einige Dinge vorstellen, die mich bei der Verwendung von PyCharm überrascht haben.
Haftungsausschluss
Ich habe nicht die Absicht, Eclipse oder PyDev zu kritisieren, ich verwende sie seit vielen Jahren und sie sind großartig! Bitte bedenken Sie, dass dies meine persönliche Erfahrung ist und Ihre möglicherweise anders sein kann.
Echtzeitvergleich
PyCharm verfolgt die von Ihnen an einer Datei vorgenommenen Änderungen in Echtzeit, indem es in der linken Spalte des Editors eine blaue Markierung anzeigt.
Das ist sehr praktisch. Ich habe den Befehl „Vergleiche mit HEAD“ in Eclipse verwendet, um die Änderungen vor und nach einer Datei zu vergleichen.
In PyCharm können Sie Ihre Änderungen auf einen Blick sehen. Gleichzeitig werden durch Klicken auf diese Markierung der vorherige Inhalt und eine Symbolleiste angezeigt:
Sie können diese Änderungen einfach rückgängig machen und sie in einem detaillierten Dialogfeld anzeigen. Diese Änderungen kann durch Einfügen des vorherigen Textes in die Zwischenablage erstellt werden.
Vergleichsvorschau beim Festschreiben
Wenn Sie in Eclipse Änderungen festschreiben, wird ein Festschreibungsdialogfeld mit der Liste der Dateien angezeigt, die festgeschrieben werden.
Sie können auf jedes der Elemente doppelklicken, um einen Vergleich der Änderungen anzuzeigen: Wenn Sie zu diesem Zeitpunkt einige Stellen im Code sehen, die Sie ändern möchten (z. B. ein falsch geschriebenes Wort, ein fehlender Absatz).
Dokumentation usw.), das macht keinen Spaß: Sie müssen alles schließen (einschließlich der Commit-Box mit Ihren sorgfältig geschriebenen Commit-Kommentaren), das fehlerhafte Codebit finden, es korrigieren und dann von vorne beginnen .
PyCharm verfügt über die gleichen Funktionen, aber Ihre Änderungen können bearbeitet werden. Ich kann gar nicht genug betonen, wie toll es ist, diese Fehler sofort beheben zu können!
Tippfehler wie die oben genannten kann ich während des Einreichungsprozesses problemlos korrigieren.
Ein zusätzlicher Bonus besteht darin, dass die Commit-Kommentare, die Sie gerade ausgefüllt haben, beibehalten werden, egal aus welchem Grund Sie den Commit-Dialog schließen, wenn Sie erneut versuchen, ihn zu committen.
Überprüfung beim Einreichen
Während des Einsendungsprozesses können wir auch einige andere Optionen vor der eigentlichen Einsendung durchführen, wie z. B. „Importe optimieren (nicht verwendete Importe sortieren und entfernen)“, das Kontrollkästchen „Rückstandselemente ändern“ aktivieren in der Sammlung usw.
Ein interessanter Punkt ist der Punkt „Perform Code Analysis“. . .
Codeüberprüfung
Sie können PyCharm bitten, eine „Codeüberprüfung“-Operation für eine Datei, ein Verzeichnis oder das gesamte Projekt durchzuführen. Es wird
bestehende Probleme und entsprechende Verbesserungsmethoden finden, ohne das Programm tatsächlich auszuführen, wie z. B. Typprüfung, statische Methoden, Verstöße gegen Codespezifikationen usw.
Wie im vorherigen Abschnitt erläutert, kann dies auch automatisch in geänderten Dateien beim Commit erfolgen. Dies ist das Ergebnis einer einzelnen Überprüfung einer Datei:
Für einige dieser Überprüfungsergebnisse können Sie auch einen Korrekturvorschlag anwenden. Beispielsweise können wir für den Vorschlag „Funktionsaufruf kann durch set literal() ersetzt werden“ die entsprechende Option auswählen, um das Problem zu beheben.
PyCharm ersetzt automatisch diesen Satz:
extensions = set(['.avi', '.mp4', '.mpg', '.mkv'])
durch:
extensions = {'.avi', '.mp4', '.mpg', '.mkv'}
Sie können jede unerwünschte Überprüfung deaktivieren, auch auf Projektebene.
Refactoring
Ich habe versucht, ein Modul umzubenennen, aber ich kann diesen Eintrag im Menüpunkt nicht finden. . . F2 hilft auch nicht.
Plötzlich bemerkte ich den Punkt „Umgestalten/Umbenennen“ im Untermenü „Datei“ und dachte nach. . . Könnte es sein? Das ist es tatsächlich!
Wenn Sie ein Modul umbenennen, werden Sie von PyCharm gefragt, ob Sie alle damit verbundenen Projekte automatisch ändern möchten. Gesegnet!
Es gibt viele andere Refactoring-Projekte, aber bisher hatte ich nicht die Gelegenheit, sie alle auszuprobieren.
Tipps zu veraltetem Code und Verbesserungsvorschläge
PyCharm kann Ihnen die veralteten Strukturblöcke im Code mitteilen und einige Verbesserungsvorschläge machen. Ich habe zum Beispiel einen Code wie den folgenden:
with nested(open(filename1), open(filename2)) as (f1, f2): <代码块>
PyCharm markiert deutlich verschachtelt:
Ich verwende Python 2.7 und Sie können tatsächlich verschachtelte Kontextmanager verwenden, aber leider muss ich noch einige ältere Versionen von Python unterstützen, also habe ich verschachtelt beibehalten.
Aber PyCharm hat mich daran erinnert, dass dieses Ding selbst immer noch cool ist.
Task Feature Branch
Wie Eclipse (erfordert Mylin-Unterstützung) unterstützt auch PyCharm aufgabenbasierte Workflows (einschließlich aufgabenbewusstem Kontext).
Allerdings bringt PyCharm selbst viele direkt verfügbare Konnektoren mit (GitHub, Mantis, Jira, Bugzilla, etc.).
Wenn Sie eine Aufgabe starten, werden Sie außerdem gefragt, ob Sie einen Funktionszweig dieser Aufgabe erstellen möchten. Der Name des Zweigs kann konfiguriert werden.
Dadurch wird vermieden, dass manuell ein neuer Zweig erstellt werden muss, was wirklich mühsam ist (Abrufen der Aufgaben-ID, Auswählen eines Namens usw.).
Das ist ein Plus.
Schnell
Ich habe beobachtet, dass PyCharm den Code bei der automatischen Codevervollständigung viel schneller scannt als Eclipse und Ihre aktuelle Arbeit nicht unterbricht.
Wie ärgerlich ist es, wenn Sie eine Datei speichern möchten und Eclipse Sie daran hindert, weil es eine Aufgabe im Hintergrund ausführt. . .
Schnellansicht der Dokumentation
Wenn Sie den Cursor über eine Funktion, Methode, Klasse oder etwas anderes bewegen, erhalten Sie eine Option zum Durchsuchen der „Schnelldokumentation“. Werfen Sie einen Blick darauf:
Wie Sie sehen können, zeigt es die Methodendokumentation in einem ansprechenden Format an und gibt auch Hinweise auf die Parametertypen aus den Code-Verwendungsanweisungen. . . Auch wenn es für diese Funktion keine entsprechende Dokumentation gibt, erhalten Sie dennoch eine Beschreibung wie folgt:
Großartig!
Docutils-Unterstützung
PyCharm bietet außerdem erstklassige Unterstützung für Doctils, sodass die Dokumentation direkt aus der integrierten Entwicklungsumgebung einfach neu generiert werden kann.
Andererseits enthält es auch einen sehr guten Rich-Text-Editor (Anmerkung des Übersetzers: ReST, reStructuredTexteditor) (meiner Meinung nach viel einfacher zu verwenden als Eclipse):
Komplettes Plug-in-System
Nach meiner Erfahrung ist die Installation von Plug-ins in Eclipse ziemlich mühsam:
Es ist schwierig zu finden, wohin man will (Tipps: Hilfe/ Neue Software installieren.
Sie haben keinen einzigen Index, daher müssen Sie online gehen, um diese Plugin-Quellen zu finden.
Das System stürzt aufgrund von Bibliotheksabhängigkeiten ab. Infolgedessen habe ich die gewünschten Plug-Ins nicht installiert (andere Leute bei der Arbeit sind ebenfalls auf dieses Problem gestoßen und mussten schließlich aufgeben).
Das Plug-In-Erlebnis von PyCharm ist viel reibungsloser.
Erstens befindet es sich an der Stelle, an der Sie es vermuten: direkt unter „Einstellungen“:
Sie können Plug-ins ganz einfach durchsuchen:
Ich habe schnell einen Markup-Editor (wie ReST) installiert, ein Plug-in, das Codeausschnitte vorübergehend speichert, sodass ich den ausgewählten Text direkt durchsuchen, ausschneiden, einfügen und in der Vorschau anzeigen kann Code, ähnlich wie SublimeText, aber mit einem schönen Code-Erscheinungsbild.