Những gì chúng tôi đang xây dựng vào năm 2020

Mar 10 2020
Kế hoạch của chúng tôi cho năm 2020 bao gồm ba lĩnh vực: Flow cung cấp một máy chủ ngôn ngữ để cung cấp các tính năng chỉnh sửa và duyệt mã phong phú, chẳng hạn như chẩn đoán trong trình chỉnh sửa (lỗi loại), tự động hoàn thành và “đi đến định nghĩa”. Trong khi trọng tâm của chúng tôi là cung cấp trải nghiệm tốt nhất trong VS Code, bất kỳ trình soạn thảo nào sử dụng LSP đều có thể tận dụng máy chủ ngôn ngữ của Flow.
Ảnh của Aksonsat Uanthoeng từ Pexels

Kế hoạch của chúng tôi cho năm 2020 bao gồm ba lĩnh vực:

  • Cải thiện khả năng và khả năng phản hồi của trải nghiệm duyệt và chỉnh sửa Mã VS của chúng tôi
  • Làm cho hệ thống loại của chúng tôi đơn giản hơn, biểu cảm hơn và chính xác hơn
  • Giảm mức sử dụng bộ nhớ cao nhất của chúng tôi trong khi giữ dòng kiểm tra lại hiệu suất

Flow cung cấp một máy chủ ngôn ngữ để cung cấp các tính năng chỉnh sửa và duyệt mã phong phú như chẩn đoán trong trình chỉnh sửa (lỗi loại), tự động hoàn thành và “đi đến định nghĩa”. Trong khi trọng tâm của chúng tôi là cung cấp trải nghiệm tốt nhất trong VS Code, bất kỳ trình soạn thảo nào sử dụng LSP đều có thể tận dụng máy chủ ngôn ngữ của Flow.

Vào năm 2020, chúng tôi sẽ tập trung vào hai loại đầu tư vào trải nghiệm chỉnh sửa và duyệt web của mình. Đầu tiên, chúng tôi sẽ tiếp tục cải thiện độ tin cậy và khả năng đáp ứng của các tính năng IDE của chúng tôi. Thứ hai, chúng tôi sẽ thêm hỗ trợ cho một số tính năng IntelliSense được yêu cầu hàng đầu.

Máy chủ ngôn ngữ Flow không phải lúc nào cũng phản hồi ngay lập tức vì nó cần khởi tạo khi khởi động lần đầu và đôi khi cần khởi động lại sau các sự kiện như giảm giá lớn. Hầu hết các tính năng ngôn ngữ yêu cầu máy chủ Flow phải chạy liên tục trong khi bạn chỉnh sửa mã. Nếu có thể, chúng tôi sẽ chuyển đổi các yêu cầu chỉnh sửa và duyệt của mình để có thể hoàn thành chúng mà không yêu cầu máy chủ. Chúng tôi cũng sẽ tiếp tục giảm các tình huống mà máy chủ Flow cần tự khởi động lại.

Nhóm đầu tư thứ hai đến từ việc bổ sung hỗ trợ cho các tính năng IntelliSense được yêu cầu hàng đầu : thông tin tham số, thông tin nhanh và các bản sửa lỗi nhanh.

  • Thông tin tham số bao gồm trợ giúp về chữ ký - số lượng và loại tham số dự kiến ​​- được hiển thị khi bạn nhập lệnh gọi hàm. Chúng tôi cũng sẽ hiển thị tài liệu về tham số được trích xuất từ ​​các nhận xét JSDoc trong mã.
  • Thông tin nhanh hiển thị khai báo khi bạn di chuột qua số nhận dạng trong mã của mình. Luồng đã hiển thị các chữ ký chức năng. Chúng tôi sẽ cải thiện định dạng để có thông tin nhanh và thêm các nhận xét tài liệu tương tự như thông tin tham số.
  • Chúng tôi vừa thêm tính năng sửa lỗi nhanh đầu tiên của mình - "Bạn có nghĩa là?" điều đó gợi ý các chỉnh sửa đối với mã của bạn khi bạn nhập. Ví dụ: nếu bạn viết foo.bartrên một đối tượng fookhông có trường được đặt tên barnhưng có trường được đặt tên baz, bản sửa lỗi nhanh sẽ áp dụng gợi ý đó. Chúng tôi cũng đang nghiên cứu thêm tính năng chặn lỗi Luồng và tạo tự động các importcâu lệnh tĩnh .

Chúng tôi tin rằng một hệ thống loại được thiết kế chu đáo, đơn giản, dễ hiểu và chính xác có thể mang lại trải nghiệm tốt hơn cho các nhà phát triển.

  • Đơn giản: các nhà phát triển có thể dự đoán Flow sẽ hoạt động như thế nào trên mã của họ không?
  • Biểu cảm: các nhà phát triển có thể làm những gì họ cần làm mà không bị chặn bởi Flow không?
  • Đúng: các nhà phát triển có thể dựa vào Flow để giúp họ tránh những sai lầm thường gặp gây tốn kém không?
  • Việc sử dụng thistrong các hàm và phương thức thường dẫn đến mã không được kiểm tra, vì nó có thể được nhập ngầm là any. Việc sử dụng anykhông an toàn và ngăn Flow báo cáo lỗi. Việc thực hiện nhập cho thissẽ cho phép Flow kiểm tra mã sử dụng this.
  • Các kiểu đối tượng không được niêm phong được sử dụng để mô hình hóa các ký tự và thuộc tính của đối tượng rỗng trên các hàm. Các đối tượng không được niêm phong cho phép các thuộc tính mới được ghi vào bất kỳ lúc nào. Chúng hữu ích cho các tình huống như cho phép khởi tạo đối tượng trên nhiều câu lệnh. Nhưng Flow không kiểm tra các lần đọc từ các đối tượng chưa được niêm phong mà không có lần ghi nào phù hợp . Chúng tôi sẽ làm việc để giải quyết sự bất ổn này, bằng cách theo dõi cẩn thận các mẫu khởi tạo phổ biến.
  • Nhiều loại tiện ích của Flow , chẳng hạn như $ObjMap$PropertyType, không phản ánh ngữ nghĩa của các hoạt động thời gian chạy tương ứng. Chúng tôi sẽ tạo ra những thiết kế hạng nhất cho những loại đó.
  • Việc ngăn chặn lỗi dòng rất thô. Việc thêm một $FlowFixMedòng mã phía trên để loại bỏ một loại lỗi thực sự loại bỏ tất cả các lỗi do mã đó đưa vào, có khả năng che các lỗi trong tương lai. Chúng tôi đang thiết kế các mã lỗi cho phép bạn loại bỏ các lỗi cụ thể mà không ẩn một lỗi khác trên cùng một dòng mã. Và chúng tôi sẽ di chuyển các lệnh triệt tiêu đến vị trí chính của một lỗi, ngăn chặn việc triệt tiêu gắn với một định nghĩa khỏi việc ẩn các lỗi mà định nghĩa đó được sử dụng.
  • Các kiểu và hàm chung hiện có hành vi không thể đoán trước, với các tham số kiểu chung có thể thoát khỏi phạm vi của chúng và các lệnh gọi đến các hàm chung có thể tích lũy các giới hạn mới ở xa trang web gọi. Chúng tôi đang thiết kế hành vi mới cho các hàm chung, bao gồm khả năng phát hiện lỗi đáng tin cậy hơn trong các hàm chung, kiểm tra để ngăn các tham số kiểu thoát và kiểm tra để đảm bảo các lệnh gọi hàm được ràng buộc đúng cách.

Nhóm Flow đã cung cấp những cải tiến hiệu suất lớn vào năm ngoái , chẳng hạn như giảm 70% thời gian kiểm tra lại của chúng tôi. Chúng tôi đã nhận được phản hồi tích cực từ các nhà phát triển Facebook về những cải tiến hiệu suất của chúng tôi. Chúng tôi mong muốn giữ vững hiệu suất, ngay cả khi cơ sở mã JavaScript của chúng tôi phát triển. Chúng tôi cũng đang nỗ lực để giảm mức sử dụng bộ nhớ của Flow trong mọi tình huống.

Kết thúc

Vào năm 2020, nhóm Flow sẽ cung cấp trải nghiệm cho nhà phát triển ngang bằng với các tiêu chuẩn toàn ngành về độ tin cậy, tính hoàn chỉnh và sự thú vị. Là một phần của trải nghiệm dành cho nhà phát triển này, chúng tôi sẽ tiếp tục cải thiện các nguyên tắc cơ bản: sử dụng bộ nhớ và độ tin cậy. Chúng tôi sẽ cung cấp các tính năng duyệt và chỉnh sửa IDE được yêu cầu nhiều nhất. Và chúng tôi sẽ nâng cao hệ thống loại của Flow để giúp các nhà phát triển viết mã chính xác và an toàn dễ dàng hơn.

Chúng tôi sẽ giữ liên lạc với bạn trên blog này, trên GitHub và trong kênh Flowtype Discord của chúng tôi .