สิ่งที่เรากำลังสร้างในปี 2020
แผนของเราในปี 2020 ครอบคลุม 3 ด้าน:
- ปรับปรุงความสามารถและการตอบสนองของประสบการณ์การแก้ไขและการท่องเว็บ VS Code ของเรา
- ทำให้ระบบการพิมพ์ของเราเรียบง่าย แสดงออก และถูกต้องมากขึ้น
- ลดการใช้หน่วยความจำสูงสุดของเราโดยยังคงรักษาบรรทัดในการตรวจสอบประสิทธิภาพอีกครั้ง
Flow จัดเตรียมเซิร์ฟเวอร์ภาษาที่ให้คุณสมบัติการแก้ไขที่หลากหลายและการเรียกดูโค้ด เช่น การวินิจฉัยในโปรแกรมแก้ไข (ข้อผิดพลาดประเภท) การเติมข้อความอัตโนมัติ และ “ไปที่คำจำกัดความ” แม้ว่าเราจะมุ่งเน้นที่การมอบประสบการณ์ที่ดีที่สุดในระดับเดียวกันใน VS Code แต่โปรแกรมแก้ไขใดๆ ที่ใช้LSPก็สามารถใช้ประโยชน์จากเซิร์ฟเวอร์ภาษาของ Flow ได้
ในปี 2020 เราจะมุ่งเน้นไปที่การลงทุนสองประเภทในประสบการณ์การแก้ไขและการเรียกดูของเรา อันดับแรก เราจะปรับปรุงความน่าเชื่อถือและการตอบสนองของฟีเจอร์ IDE ของเราต่อไป ประการที่สอง เราจะเพิ่มการสนับสนุนสำหรับฟีเจอร์ IntelliSense ที่ได้รับการร้องขอสูงสุด
เซิร์ฟเวอร์ภาษา Flow ไม่ตอบสนองทันทีเสมอไป เนื่องจากจำเป็นต้องเริ่มต้นใช้งานเมื่อเริ่มต้นระบบครั้งแรก และบางครั้งจำเป็นต้องรีสตาร์ทหลังจากเหตุการณ์ เช่น การรีบูตจำนวนมาก คุณสมบัติภาษาส่วนใหญ่ต้องการให้เซิร์ฟเวอร์ Flow ทำงานอย่างต่อเนื่องในขณะที่คุณแก้ไขโค้ด หากเป็นไปได้ เราจะแปลงคำขอแก้ไขและเรียกดูเพื่อให้ดำเนินการได้โดยไม่ต้องใช้เซิร์ฟเวอร์ นอกจากนี้เรายังจะลดสถานการณ์ที่เซิร์ฟเวอร์ Flow จำเป็นต้องรีสตาร์ทตัวเองต่อไป การลงทุนชุดที่สองมาจากการเพิ่มการสนับสนุนสำหรับคุณลักษณะ IntelliSense
ที่ได้รับการร้องขอสูงสุด: ข้อมูลพารามิเตอร์ ข้อมูลด่วน และการแก้ไขด่วน
- ข้อมูลพารามิเตอร์ประกอบด้วยวิธีใช้ลายเซ็น — จำนวนและประเภทของพารามิเตอร์ที่ต้องการ — ซึ่งจะแสดงเมื่อคุณพิมพ์การเรียกใช้ฟังก์ชัน นอกจากนี้เรายังแสดงเอกสารประกอบเกี่ยวกับพารามิเตอร์ที่ดึงมาจาก ความคิดเห็น JSDocในโค้ด
- ข้อมูลด่วนจะแสดงการประกาศเมื่อคุณวางเมาส์เหนือตัวระบุในโค้ดของคุณ Flow แสดงลายเซ็นของฟังก์ชันแล้ว เราจะปรับปรุงการจัดรูปแบบสำหรับข้อมูลด่วนและเพิ่มความคิดเห็นเกี่ยวกับเอกสารที่คล้ายกับข้อมูลพารามิเตอร์
- เราเพิ่งเพิ่มฟีเจอร์การแก้ไขด่วนครั้งแรก — “คุณหมายถึงหรือเปล่า” ที่แนะนำการแก้ไขโค้ดของคุณ ขณะที่คุณพิมพ์ ตัวอย่างเช่น ถ้าคุณเขียน
foo.bar
บนออบเจ็กต์foo
ที่ไม่มีฟิลด์ชื่อbar
แต่มีฟิลด์ชื่อbaz
การแก้ไขด่วนจะใช้คำแนะนำนั้น เรากำลังตรวจสอบการเพิ่มการระงับข้อผิดพลาดของ Flow และการสร้างimport
คำสั่ง คงที่โดยอัตโนมัติ
เราเชื่อว่าระบบประเภทที่ได้รับการออกแบบอย่างพิถีพิถัน เรียบง่าย สื่ออารมณ์ และถูกต้อง สามารถมอบประสบการณ์ที่ดีขึ้นให้กับนักพัฒนาได้
- ง่าย ๆ: นักพัฒนาสามารถคาดเดาได้ว่า Flow จะทำงานอย่างไรกับโค้ดของพวกเขา?
- แสดงออก: นักพัฒนาสามารถทำสิ่งที่พวกเขาจำเป็นต้องทำโดยไม่ถูกบล็อกโดย Flow ได้หรือไม่?
- ถูกต้อง: นักพัฒนาสามารถพึ่งพา Flow เพื่อช่วยหลีกเลี่ยงข้อผิดพลาดที่ก่อให้เกิดค่าใช้จ่ายสูงได้หรือไม่
- การใช้
this
ฟังก์ชันและวิธีการของ in มักจะทำให้โค้ดไม่ถูกตรวจสอบ เนื่องจากสามารถพิมพ์โดยปริยายเป็นany
. การใช้งานany
ไม่ปลอดภัยและป้องกันไม่ให้ Flow รายงานข้อผิดพลาด การใช้การพิมพ์ forthis
จะทำให้ Flow ตรวจสอบโค้ดที่ใช้this
. - ประเภทออบเจ็กต์ที่เปิดผนึกจะใช้ในการสร้างแบบจำลองตามตัวอักษรของออบเจ็กต์ว่างและคุณสมบัติของฟังก์ชัน วัตถุที่เปิดผนึกช่วยให้สามารถเขียนคุณสมบัติใหม่ได้ตลอดเวลา มีประโยชน์สำหรับสถานการณ์เช่นการเปิดใช้งานการเริ่มต้นออบเจ็กต์ในหลายคำสั่ง แต่ Flow จะไม่ตรวจสอบการอ่านจากวัตถุ ที่เปิดผนึกโดยไม่มีการเขียนที่ตรงกัน เราจะดำเนินการแก้ไขความไม่มั่นคงนี้โดยการติดตามรูปแบบการเริ่มต้นทั่วไปอย่างระมัดระวัง
- ยูทิลิตี้ หลายประเภท ของ Flow เช่น
$ObjMap
และ$PropertyType
ไม่ได้สะท้อนความหมายของการดำเนินการรันไทม์ที่เกี่ยวข้อง เราจะสร้างการออกแบบชั้นหนึ่งสำหรับประเภทเหล่านั้น - การระงับข้อผิดพลาดในการไหลมีความหยาบมาก การเพิ่ม
$FlowFixMe
บรรทัดโค้ดด้านบนเพื่อระงับข้อผิดพลาดประเภทหนึ่ง แท้จริงแล้วเป็นการระงับข้อผิดพลาดทั้งหมดที่เกิดจากโค้ดนั้น ซึ่งอาจปกปิดข้อผิดพลาดในอนาคตได้ เรากำลังออกแบบรหัสข้อผิดพลาดที่จะช่วยให้คุณสามารถระงับข้อผิดพลาดเฉพาะโดยไม่ต้องซ่อนข้อผิดพลาดอื่นในบรรทัดโค้ดเดียวกัน และเราจะย้ายการระงับไปยังตำแหน่งหลักของข้อผิดพลาด เพื่อป้องกันไม่ให้การระงับที่แนบมากับคำจำกัดความซ่อนข้อผิดพลาดเมื่อใช้คำจำกัดความนั้น - ประเภทและฟังก์ชันทั่วไปในปัจจุบันมีพฤติกรรมที่คาดเดาไม่ได้ โดยพารามิเตอร์ประเภททั่วไปสามารถหลีกเลี่ยงขอบเขตได้ และการเรียกไปยังฟังก์ชันทั่วไปที่สามารถสะสมขอบเขตใหม่ที่อยู่ห่างไกลจากไซต์การโทร เรากำลังออกแบบพฤติกรรมใหม่สำหรับฟังก์ชันทั่วไป รวมถึงการตรวจจับข้อผิดพลาดในฟังก์ชันทั่วไปที่เชื่อถือได้มากขึ้น การทดสอบเพื่อป้องกันพารามิเตอร์ประเภท Escape และการตรวจสอบเพื่อให้แน่ใจว่าการเรียกใช้ฟังก์ชันมีข้อจำกัดอย่างเหมาะสม
ทีม Flow ได้ทำการปรับปรุงประสิทธิภาพครั้งใหญ่ในปีที่แล้วเช่น ลดเวลาตรวจสอบซ้ำของเราลง 70% เราได้ยินผลตอบรับเชิงบวกอย่างท่วมท้นจากนักพัฒนา Facebook เกี่ยวกับการปรับปรุงประสิทธิภาพของเรา เรามุ่งมั่นที่จะรักษาประสิทธิภาพไว้ แม้ว่าฐานโค้ด JavaScript ของเราจะเติบโตขึ้นก็ตาม เรายังทำงานเพื่อลดการใช้หน่วยความจำของ Flow ในทุกสถานการณ์
ในการปิด
ในปี 2020 ทีม Flow จะมอบประสบการณ์นักพัฒนาที่ทัดเทียมกับมาตรฐานความน่าเชื่อถือ ความสมบูรณ์ของฟีเจอร์ และความพึงพอใจทั่วทั้งอุตสาหกรรม จากประสบการณ์ของนักพัฒนาซอฟต์แวร์ เราจะปรับปรุงปัจจัยพื้นฐานต่อไป ได้แก่ การใช้หน่วยความจำและความน่าเชื่อถือ เราจะนำเสนอคุณสมบัติการแก้ไขและเรียกดู IDE ที่ได้รับการร้องขอมากที่สุด และเราจะปรับปรุงระบบประเภทของ Flow เพื่อให้นักพัฒนาเขียนโค้ดที่ถูกต้องและปลอดภัยได้ง่ายขึ้น เรา จะ
ติดต่อคุณในบล็อกนี้ บนGitHubและในช่องทาง Flowtype Discord ของเรา