Co budujemy w 2020 roku

Mar 10 2020
Nasz plan na rok 2020 obejmuje trzy obszary: Flow zapewnia serwer językowy zapewniający bogate funkcje edycji i przeglądania kodu, takie jak diagnostyka w edytorze (błędy typu), autouzupełnianie i „przejdź do definicji”. Podczas gdy naszym celem jest zapewnienie najlepszego w swojej klasie doświadczenia w VS Code, każdy edytor korzystający z LSP może skorzystać z serwera językowego Flow.
Zdjęcie autorstwa Aksonsat Uanthoeng z Pexels

Nasz plan na 2020 rok obejmuje trzy obszary:

  • Popraw możliwości i szybkość reakcji naszego programu VS Code do edycji i przeglądania
  • Uczyń nasz system czcionek prostszym, bardziej wyrazistym i poprawnym
  • Zmniejsz nasze szczytowe zużycie pamięci, zachowując równowagę przy ponownym sprawdzaniu wydajności

Flow zapewnia serwer językowy zapewniający bogate funkcje edycji i przeglądania kodu, takie jak diagnostyka w edytorze (błędy typu), autouzupełnianie i „przejdź do definicji”. Podczas gdy naszym celem jest zapewnienie najlepszego w swojej klasie doświadczenia w VS Code, każdy edytor korzystający z LSP może skorzystać z serwera językowego Flow.

W 2020 roku skupimy się na dwóch rodzajach inwestycji w nasze doświadczenie w edycji i przeglądaniu. Po pierwsze, będziemy nadal poprawiać niezawodność i szybkość reakcji naszych funkcji IDE. Po drugie, dodamy obsługę niektórych najczęściej żądanych funkcji IntelliSense.

Serwer języka Flow nie zawsze odpowiada natychmiast, ponieważ musi zostać zainicjowany przy pierwszym uruchomieniu, a czasami musi zostać ponownie uruchomiony po zdarzeniach, takich jak duże ponowne bazy. Większość funkcji językowych wymaga ciągłego działania serwera Flow podczas edycji kodu. Tam, gdzie to możliwe, przekonwertujemy nasze żądania edycji i przeglądania, aby umożliwić ich ukończenie bez wymagania serwera. Będziemy również nadal ograniczać sytuacje, w których serwer Flow musi sam się zrestartować.

Drugi zestaw inwestycji pochodzi z dodania obsługi najczęściej żądanych funkcji IntelliSense : informacji o parametrach, szybkich informacji i szybkich poprawek.

  • Informacje o parametrach obejmują pomoc dotyczącą podpisu - liczbę i typy oczekiwanych parametrów - wyświetlane podczas wpisywania wywołania funkcji. Pokażemy również dokumentację dotyczącą parametru wyodrębnionego z komentarzy JSDoc w kodzie.
  • Szybkie informacje pokazują deklarację po umieszczeniu wskaźnika myszy nad identyfikatorem w kodzie. Flow pokazuje już sygnatury funkcji. Poprawimy formatowanie szybkich informacji i dodamy komentarze do dokumentacji podobne do informacji o parametrach.
  • Właśnie dodaliśmy naszą pierwszą funkcję szybkiej poprawki - „Czy chodziło Ci o to?” to sugeruje poprawki do twojego kodu podczas pisania. Na przykład, jeśli napiszesz foo.barna obiekcie foo, który nie ma pola o nazwie, barale ma pole o nazwie baz, szybka poprawka zastosuje tę sugestię. Badamy również dodanie funkcji wstrzymywania błędów przepływu i automatycznego generowania importinstrukcji statycznych .

Wierzymy, że przemyślany system czcionek, który jest prosty, wyrazisty i poprawny, może zapewnić programistom lepsze wrażenia.

  • Proste: czy programiści mogą przewidzieć, jak Flow zachowa się w ich kodzie?
  • Ekspresyjny: czy programiści mogą robić to, co muszą, bez blokowania ich przez Flow?
  • Prawidłowo: czy programiści mogą polegać na Flow, aby uniknąć typowych kosztownych błędów?
  • Użycie thisw funkcjach i metodach często prowadzi do niezaznaczenia kodu, ponieważ można go niejawnie wpisać jako any. Używanie anyjest niebezpieczne i zapobiega zgłaszaniu błędów przez Flow. Zaimplementowanie wpisywania dla thispozwoli Flow sprawdzić kod, który używa this.
  • Niezapieczone typy obiektów są używane do modelowania pustych literałów obiektów i właściwości funkcji. Niezapieczętowane obiekty pozwalają na zapisanie nowych właściwości w dowolnym momencie. Są przydatne w scenariuszach, takich jak włączanie inicjalizacji obiektów w wielu instrukcjach. Jednak Flow nie sprawdza odczytów z niezapieczętowanych obiektów bez pasujących zapisów . Będziemy pracować nad rozwiązaniem tego problemu, uważnie śledząc typowe wzorce inicjalizacji.
  • Wiele typów narzędzi Flow , takich jak $ObjMapi $PropertyType, nie odzwierciedla semantyki odpowiednich operacji środowiska uruchomieniowego. Dla tych typów stworzymy pierwszorzędne projekty.
  • Tłumienie błędów przepływu jest bardzo zgrubne. Dodanie $FlowFixMepowyższego wiersza kodu w celu wyeliminowania jednego rodzaju błędu w rzeczywistości pomija wszystkie błędy wprowadzone przez ten kod, potencjalnie maskując przyszłe błędy. Projektujemy kody błędów, które pozwolą Ci wyeliminować określone błędy bez ukrywania innego błędu w tej samej linii kodu. Przeniesiemy pomijania do pierwotnej pozycji błędu, zapobiegając ukrywaniu błędów przez pomijanie dołączone do definicji.
  • Typy i funkcje ogólne mają obecnie nieprzewidywalne zachowanie, z parametrami typu ogólnego, które mogą wymknąć się ze swojego zakresu i wywołania funkcji ogólnych, które mogą gromadzić nowe ograniczenia z dala od miejsca wywołania. Projektujemy nowe zachowanie dla typów ogólnych, w tym bardziej niezawodne wykrywanie błędów w funkcjach ogólnych, test zapobiegający ucieczce parametrów typu oraz sprawdzenie, czy wywołania funkcji są odpowiednio ograniczone.

Zespół Flow zapewnił w zeszłym roku ogromną poprawę wydajności , na przykład skrócenie czasu ponownego sprawdzenia o 70%. Słyszeliśmy przytłaczające pozytywne opinie od programistów Facebooka na temat naszych ulepszeń wydajności. Naszym celem jest utrzymanie wydajności, nawet w miarę rozwoju naszych baz kodu JavaScript. Pracujemy również nad zmniejszeniem użycia pamięci Flow we wszystkich sytuacjach.

W zamknięciu

W 2020 roku zespół Flow zapewni programistom doświadczenie odpowiadające ogólno branżowym standardom niezawodności, kompletności funkcji i satysfakcji. W ramach tego doświadczenia deweloperskiego będziemy nadal doskonalić podstawy: użycie pamięci i niezawodność. Zapewnimy najbardziej pożądane funkcje edycji i przeglądania IDE. I ulepszymy system typów Flow, aby ułatwić programistom pisanie bezpiecznego, poprawnego kodu.

Będziemy z Tobą w kontakcie na tym blogu, w serwisie GitHub i na naszym kanale Flowtype na Discordzie .