Apa yang kami bangun di tahun 2020

Mar 10 2020
Rencana kami untuk tahun 2020 mencakup tiga area: Flow menyediakan server bahasa untuk menyediakan fitur pengeditan yang kaya dan penjelajahan kode seperti diagnostik dalam editor (kesalahan jenis), pelengkapan otomatis, dan "masuk ke definisi". Meskipun fokus kami adalah memberikan pengalaman VS Code yang terbaik di kelasnya, editor mana pun yang menggunakan LSP dapat memanfaatkan server bahasa Flow.
Foto oleh Aksonsat Uanthoeng dari Pexels

Rencana kami untuk tahun 2020 mencakup tiga bidang:

  • Tingkatkan kemampuan dan daya tanggap pengalaman pengeditan dan penelusuran VS Code kami
  • Jadikan sistem tipe kami lebih sederhana, ekspresif, dan benar
  • Kurangi penggunaan memori puncak kami sambil menahan garis pada kinerja pemeriksaan ulang

Flow menyediakan server bahasa untuk menyediakan fitur pengeditan yang kaya dan penjelajahan kode seperti diagnostik dalam editor (kesalahan jenis), pelengkapan otomatis, dan "masuk ke definisi". Meskipun fokus kami adalah memberikan pengalaman VS Code yang terbaik di kelasnya, editor mana pun yang menggunakan LSP dapat memanfaatkan server bahasa Flow.

Pada tahun 2020 kami akan fokus pada dua jenis investasi dalam pengalaman pengeditan dan penelusuran kami. Pertama, kami akan terus meningkatkan keandalan dan daya tanggap fitur IDE kami. Kedua, kami akan menambahkan dukungan untuk beberapa fitur IntelliSense yang paling banyak diminta.

Server bahasa Flow tidak selalu merespons dengan segera karena perlu diinisialisasi saat pertama kali memulai, dan terkadang perlu dimulai ulang setelah peristiwa seperti rebases besar. Sebagian besar fitur bahasa mengharuskan server Flow dijalankan terus menerus saat Anda mengedit kode. Jika memungkinkan, kami akan mengonversi permintaan edit dan penelusuran kami untuk membuatnya mungkin diselesaikan tanpa memerlukan server. Kami juga akan terus mengurangi situasi di mana server Flow perlu memulai ulang sendiri.

Rangkaian investasi kedua berasal dari penambahan dukungan untuk fitur IntelliSense yang paling banyak diminta : info parameter, info cepat, dan perbaikan cepat.

  • Info parameter termasuk bantuan tanda tangan - jumlah dan jenis parameter yang diharapkan - ditampilkan saat Anda mengetik panggilan fungsi. Kami juga akan menunjukkan dokumentasi tentang parameter yang diekstrak dari komentar JSDoc dalam kode.
  • Info cepat menunjukkan deklarasi saat Anda mengarahkan kursor ke pengenal di kode Anda. Flow sudah menunjukkan tanda tangan fungsi. Kami akan meningkatkan pemformatan untuk info cepat dan menambahkan komentar dokumentasi yang mirip dengan info parameter.
  • Kami baru saja menambahkan fitur perbaikan cepat pertama kami - "Apakah Maksud Anda?" yang menyarankan koreksi pada kode Anda saat Anda mengetik. Misalnya, jika Anda menulis foo.barpada objek fooyang tidak memiliki bidang bernama bartetapi memiliki bidang bernama baz, perbaikan cepat akan menerapkan saran itu. Kami juga menyelidiki penambahan penekanan kesalahan Arus dan pembuatan otomatis importpernyataan statis .

Kami yakin bahwa sistem jenis yang dirancang dengan cermat dan sederhana, ekspresif, dan benar dapat memberikan pengalaman yang lebih baik bagi pengembang.

  • Sederhana: dapatkah pengembang memprediksi bagaimana Flow akan berperilaku pada kode mereka?
  • Ekspresif: dapatkah pengembang melakukan apa yang perlu mereka lakukan tanpa terhalang oleh Flow?
  • Benar: dapatkah pengembang mengandalkan Flow untuk membantu mereka menghindari kesalahan umum yang merugikan?
  • Penggunaan thisdalam fungsi dan metode sering kali mengarah ke kode yang tidak dicentang, karena secara implisit dapat diketik sebagai any. Penggunaan anytidak aman dan mencegah Flow melaporkan kesalahan. Menerapkan pengetikan untuk thisakan memungkinkan Flow untuk memeriksa kode yang digunakan this.
  • Tipe objek tak tersegel digunakan untuk memodelkan literal objek kosong dan properti pada fungsi. Objek yang tidak disegel memungkinkan properti baru untuk ditulis kapan saja. Mereka berguna untuk skenario seperti mengaktifkan inisialisasi objek di beberapa pernyataan. Namun Flow tidak memeriksa pembacaan dari objek yang tidak disegel tanpa penulisan yang cocok . Kami akan berupaya mengatasi ketidaknyamanan ini, dengan melacak pola inisialisasi umum secara cermat.
  • Banyak jenis utilitas Flow , seperti $ObjMapdan $PropertyType, tidak mencerminkan semantik dari operasi waktu proses terkait. Kami akan membuat desain kelas satu untuk jenis tersebut.
  • Penindasan kesalahan aliran sangat kasar. Menambahkan $FlowFixMebaris kode di atas untuk menekan satu jenis kesalahan sebenarnya menekan semua kesalahan yang disebabkan oleh kode itu, berpotensi menutupi kesalahan di masa mendatang. Kami sedang merancang kode kesalahan yang memungkinkan Anda untuk menyembunyikan kesalahan tertentu tanpa menyembunyikan kesalahan lain pada baris kode yang sama. Dan kami akan memindahkan penekanan ke posisi utama kesalahan, mencegah penekanan yang melekat pada definisi menyembunyikan kesalahan di mana definisi tersebut digunakan.
  • Jenis dan fungsi generik saat ini memiliki perilaku yang tidak dapat diprediksi, dengan parameter jenis umum yang dapat keluar dari cakupannya dan panggilan ke fungsi umum dapat mengakumulasikan batas baru yang jauh dari situs panggilan. Kami merancang perilaku baru untuk obat generik, termasuk deteksi kesalahan yang lebih andal dalam fungsi generik, pengujian untuk mencegah parameter tipe lolos, dan pemeriksaan untuk memastikan pemanggilan fungsi dibatasi dengan benar.

Tim Flow memberikan peningkatan kinerja besar-besaran tahun lalu , seperti mengurangi waktu pemeriksaan ulang kami hingga 70%. Kami telah mendengar banyak umpan balik positif dari pengembang Facebook tentang peningkatan kinerja kami. Kami bertujuan untuk mempertahankan kinerja, bahkan saat basis kode JavaScript kami berkembang. Kami juga bekerja untuk mengurangi penggunaan memori Flow di semua situasi.

Sebagai penutup

Pada tahun 2020, tim Flow akan memberikan pengalaman pengembang yang setara dengan standar keandalan, kelengkapan fitur, dan kesenangan di seluruh industri. Sebagai bagian dari pengalaman pengembang ini, kami akan terus meningkatkan dasar-dasar: penggunaan memori dan keandalan. Kami akan memberikan fitur edit dan jelajahi IDE yang paling banyak diminta. Dan kami akan menyempurnakan sistem tipe Flow untuk memudahkan pengembang menulis kode yang aman dan benar.

Kami akan tetap berhubungan dengan Anda di blog ini, di GitHub , dan di saluran Flowtype Discord kami .