Co budujemy w 2020 roku
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.bar
na obiekciefoo
, który nie ma pola o nazwie,bar
ale ma pole o nazwiebaz
, szybka poprawka zastosuje tę sugestię. Badamy również dodanie funkcji wstrzymywania błędów przepływu i automatycznego generowaniaimport
instrukcji 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
this
w funkcjach i metodach często prowadzi do niezaznaczenia kodu, ponieważ można go niejawnie wpisać jakoany
. Używanieany
jest niebezpieczne i zapobiega zgłaszaniu błędów przez Flow. Zaimplementowanie wpisywania dlathis
pozwoli Flow sprawdzić kod, który używathis
. - 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
$ObjMap
i$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
$FlowFixMe
powyż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 .