Was wir im Jahr 2020 bauen

Mar 10 2020
Unser Plan für 2020 deckt drei Bereiche ab: Flow bietet einen Sprachserver, der umfangreiche Funktionen zum Bearbeiten und Durchsuchen von Code bietet, z. B. Diagnose im Editor (Typfehler), automatische Vervollständigung und „Zur Definition gehen“. Während unser Fokus auf der Bereitstellung einer erstklassigen Erfahrung in VS Code liegt, kann jeder Editor, der LSP verwendet, den Sprachserver von Flow nutzen.
Foto von Aksonsat Uanthoeng aus Pexels

Unser Plan für 2020 umfasst drei Bereiche:

  • Verbessern Sie die Funktionen und die Reaktionsfähigkeit unserer VS Code-Bearbeitungs- und Browsing-Erfahrung
  • Machen Sie unser Schriftsystem einfacher, ausdrucksvoller und korrekter
  • Reduzieren Sie die maximale Speichernutzung, während Sie die Leistung erneut prüfen

Flow bietet einen Sprachserver, der umfangreiche Funktionen zum Bearbeiten und Durchsuchen von Code bietet, z. B. Diagnose im Editor (Typfehler), automatische Vervollständigung und "Zur Definition gehen". Während unser Fokus auf der Bereitstellung einer erstklassigen Erfahrung in VS Code liegt, kann jeder Editor, der LSP verwendet, den Sprachserver von Flow nutzen.

Im Jahr 2020 werden wir uns auf zwei Arten von Investitionen in unsere Bearbeitungs- und Browsererfahrung konzentrieren. Zunächst werden wir die Zuverlässigkeit und Reaktionsfähigkeit unserer IDE-Funktionen weiter verbessern. Zweitens werden wir Unterstützung für einige der am häufigsten angeforderten IntelliSense-Funktionen hinzufügen.

Der Flow-Sprachserver reagiert nicht immer sofort, da er beim ersten Start initialisiert werden muss und manchmal nach Ereignissen wie großen Rebases neu gestartet werden muss. Für die meisten Sprachfunktionen muss der Flow-Server kontinuierlich ausgeführt werden, während Sie Code bearbeiten. Wenn möglich, konvertieren wir unsere Bearbeitungs- und Durchsuchungsanforderungen, damit sie ohne Server ausgeführt werden können. Wir werden auch weiterhin die Situationen reduzieren, in denen der Flow-Server sich selbst neu starten muss.

Eine zweite Reihe von Investitionen ergibt sich aus der Unterstützung der am häufigsten nachgefragten IntelliSense- Funktionen: Parameterinformationen, Kurzinformationen und Schnellkorrekturen.

  • Zu den Parameterinformationen gehört die Signaturhilfe - Anzahl und Art der erwarteten Parameter -, die während der Eingabe des Funktionsaufrufs angezeigt wird. Wir zeigen auch die Dokumentation zu den Parametern, die aus JSDoc- Kommentaren im Code extrahiert wurden .
  • Die Kurzinfo zeigt die Deklaration an, wenn Sie mit der Maus über eine Kennung in Ihrem Code fahren. Flow zeigt bereits Funktionssignaturen an. Wir werden die Formatierung für schnelle Informationen verbessern und Dokumentationskommentare hinzufügen, die den Parameterinformationen ähneln.
  • Wir haben gerade unsere erste Schnellkorrekturfunktion hinzugefügt - eine "Hast du gemeint?" Dies schlägt Korrekturen an Ihrem Code während der Eingabe vor. Wenn Sie beispielsweise foo.barauf ein Objekt schreiben foo, das kein Feld mit dem Namen bar, aber ein Feld mit dem Namen hat baz, wird dieser Vorschlag von der Schnellkorrektur angewendet. Wir untersuchen auch das Hinzufügen von Flussfehlerunterdrückungen und die automatische Generierung statischer importAnweisungen.

Wir glauben, dass ein durchdachtes Typensystem, das einfach, ausdrucksstark und korrekt ist, Entwicklern eine bessere Erfahrung bieten kann.

  • Einfach: Können Entwickler vorhersagen, wie sich Flow in ihrem Code verhalten würde?
  • Ausdrucksstark: Können Entwickler das tun, was sie tun müssen, ohne von Flow blockiert zu werden?
  • Richtig: Können sich Entwickler auf Flow verlassen, um häufige kostspielige Fehler zu vermeiden?
  • Die Verwendung thisin Funktionen und Methoden führt häufig zu ungeprüftem Code, da dieser implizit als eingegeben werden kann any. Die Verwendung anyist unsicher und verhindert, dass Flow Fehler meldet. Durch die Implementierung der Eingabe für thiskann Flow den verwendeten Code überprüfen this.
  • Nicht versiegelte Objekttypen werden verwendet, um leere Objektliterale und Eigenschaften für Funktionen zu modellieren. Mit nicht versiegelten Objekten können jederzeit neue Eigenschaften geschrieben werden. Sie sind nützlich für Szenarien wie das Aktivieren der Objektinitialisierung über mehrere Anweisungen hinweg. Aber Fluss überprüft nicht , liest aus unverschlossenen Objekte ohne passende schreibt . Wir werden daran arbeiten, diese Unklarheit zu beheben, indem wir gängige Initialisierungsmuster sorgfältig verfolgen.
  • Viele der Dienstprogrammtypen von Flow , wie z. B. $ObjMapund $PropertyType, spiegeln nicht die Semantik der entsprechenden Laufzeitoperationen wider. Wir werden erstklassige Designs für diese Typen erstellen.
  • Flow Fehler Unterdrückungen sind sehr grob. Durch Hinzufügen eines $FlowFixMeCodes über einer Codezeile zur Unterdrückung einer Fehlerart werden tatsächlich alle durch diesen Code eingeführten Fehler unterdrückt, wodurch möglicherweise zukünftige Fehler maskiert werden. Wir entwickeln Fehlercodes, mit denen Sie bestimmte Fehler unterdrücken können, ohne einen weiteren Fehler in derselben Codezeile zu verbergen. Und wir werden Unterdrückungen an die primäre Position eines Fehlers verschieben, um zu verhindern, dass eine an eine Definition angehängte Unterdrückung Fehler verbirgt, wenn diese Definition verwendet wird.
  • Generische Typen und Funktionen weisen derzeit ein unvorhersehbares Verhalten auf. Generische Typparameter können sich ihrem Gültigkeitsbereich entziehen, und Aufrufe von generischen Funktionen können neue Grenzen weit entfernt von der Aufrufstelle ansammeln. Wir entwickeln ein neues Verhalten für Generika, einschließlich einer zuverlässigeren Erkennung von Fehlern in generischen Funktionen, eines Tests zur Verhinderung von Escape-Typparametern und einer Überprüfung, um sicherzustellen, dass Funktionsaufrufe ordnungsgemäß eingeschränkt sind.

Das Flow-Team hat im vergangenen Jahr massive Leistungsverbesserungen erzielt, beispielsweise die Reduzierung unserer Überprüfungszeiten um 70%. Wir haben überwältigende positive Rückmeldungen von Facebook-Entwicklern zu unseren Leistungsverbesserungen erhalten. Wir sind bestrebt, die Leistung zu verbessern, auch wenn unsere JavaScript-Codebasen wachsen. Wir arbeiten auch daran, die Speichernutzung des Flows in allen Situationen zu reduzieren.

Abschließend

Im Jahr 2020 wird das Flow-Team eine Entwicklererfahrung bieten, die den branchenweiten Standards für Zuverlässigkeit, Vollständigkeit der Funktionen und Freude entspricht. Im Rahmen dieser Entwicklererfahrung werden wir die Grundlagen weiter verbessern: Speichernutzung und Zuverlässigkeit. Wir liefern die am häufigsten nachgefragten IDE-Bearbeitungs- und Suchfunktionen. Und wir werden das Typsystem von Flow verbessern, um Entwicklern das Schreiben von sicherem und korrektem Code zu erleichtern.

Wir werden auf diesem Blog, auf GitHub und in unserem Flowtype Discord-Kanal mit Ihnen in Kontakt bleiben .