สิ่งที่เรากำลังสร้างในปี 2020

Mar 10 2020
แผนของเราสำหรับปี 2020 ครอบคลุมสามด้าน: Flow มอบเซิร์ฟเวอร์ภาษาที่ให้การแก้ไขที่หลากหลายและการเรียกดูโค้ด เช่น การวินิจฉัยในตัวแก้ไข (ข้อผิดพลาดประเภท) การเติมข้อความอัตโนมัติ และ “ไปที่คำจำกัดความ” แม้ว่าเราจะมุ่งเน้นที่การมอบประสบการณ์ที่ดีที่สุดในระดับเดียวกันใน VS Code แต่โปรแกรมแก้ไขใดๆ ที่ใช้ LSP ก็สามารถใช้ประโยชน์จากเซิร์ฟเวอร์ภาษาของ Flow ได้
ภาพถ่ายโดย Aksonsat Uanthoeng จาก Pexels

แผนของเราในปี 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 รายงานข้อผิดพลาด การใช้การพิมพ์ for thisจะทำให้ Flow ตรวจสอบโค้ดที่ใช้this.
  • ประเภทออบเจ็กต์ที่เปิดผนึกจะใช้ในการสร้างแบบจำลองตามตัวอักษรของออบเจ็กต์ว่างและคุณสมบัติของฟังก์ชัน วัตถุที่เปิดผนึกช่วยให้สามารถเขียนคุณสมบัติใหม่ได้ตลอดเวลา มีประโยชน์สำหรับสถานการณ์เช่นการเปิดใช้งานการเริ่มต้นออบเจ็กต์ในหลายคำสั่ง แต่ Flow จะไม่ตรวจสอบการอ่านจากวัตถุ ที่เปิดผนึกโดยไม่มีการเขียนที่ตรงกัน เราจะดำเนินการแก้ไขความไม่มั่นคงนี้โดยการติดตามรูปแบบการเริ่มต้นทั่วไปอย่างระมัดระวัง
  • ยูทิลิตี้ หลายประเภท ของ Flow เช่น$ObjMapและ$PropertyTypeไม่ได้สะท้อนความหมายของการดำเนินการรันไทม์ที่เกี่ยวข้อง เราจะสร้างการออกแบบชั้นหนึ่งสำหรับประเภทเหล่านั้น
  • การระงับข้อผิดพลาดในการไหลมีความหยาบมาก การเพิ่ม$FlowFixMeบรรทัดโค้ดด้านบนเพื่อระงับข้อผิดพลาดประเภทหนึ่ง แท้จริงแล้วเป็นการระงับข้อผิดพลาดทั้งหมดที่เกิดจากโค้ดนั้น ซึ่งอาจปกปิดข้อผิดพลาดในอนาคตได้ เรากำลังออกแบบรหัสข้อผิดพลาดที่จะช่วยให้คุณสามารถระงับข้อผิดพลาดเฉพาะโดยไม่ต้องซ่อนข้อผิดพลาดอื่นในบรรทัดโค้ดเดียวกัน และเราจะย้ายการระงับไปยังตำแหน่งหลักของข้อผิดพลาด เพื่อป้องกันไม่ให้การระงับที่แนบมากับคำจำกัดความซ่อนข้อผิดพลาดเมื่อใช้คำจำกัดความนั้น
  • ประเภทและฟังก์ชันทั่วไปในปัจจุบันมีพฤติกรรมที่คาดเดาไม่ได้ โดยพารามิเตอร์ประเภททั่วไปสามารถหลีกเลี่ยงขอบเขตได้ และการเรียกไปยังฟังก์ชันทั่วไปที่สามารถสะสมขอบเขตใหม่ที่อยู่ห่างไกลจากไซต์การโทร เรากำลังออกแบบพฤติกรรมใหม่สำหรับฟังก์ชันทั่วไป รวมถึงการตรวจจับข้อผิดพลาดในฟังก์ชันทั่วไปที่เชื่อถือได้มากขึ้น การทดสอบเพื่อป้องกันพารามิเตอร์ประเภท Escape และการตรวจสอบเพื่อให้แน่ใจว่าการเรียกใช้ฟังก์ชันมีข้อจำกัดอย่างเหมาะสม

ทีม Flow ได้ทำการปรับปรุงประสิทธิภาพครั้งใหญ่ในปีที่แล้วเช่น ลดเวลาตรวจสอบซ้ำของเราลง 70% เราได้ยินผลตอบรับเชิงบวกอย่างท่วมท้นจากนักพัฒนา Facebook เกี่ยวกับการปรับปรุงประสิทธิภาพของเรา เรามุ่งมั่นที่จะรักษาประสิทธิภาพไว้ แม้ว่าฐานโค้ด JavaScript ของเราจะเติบโตขึ้นก็ตาม เรายังทำงานเพื่อลดการใช้หน่วยความจำของ Flow ในทุกสถานการณ์

ในการปิด

ในปี 2020 ทีม Flow จะมอบประสบการณ์นักพัฒนาที่ทัดเทียมกับมาตรฐานความน่าเชื่อถือ ความสมบูรณ์ของฟีเจอร์ และความพึงพอใจทั่วทั้งอุตสาหกรรม จากประสบการณ์ของนักพัฒนาซอฟต์แวร์ เราจะปรับปรุงปัจจัยพื้นฐานต่อไป ได้แก่ การใช้หน่วยความจำและความน่าเชื่อถือ เราจะนำเสนอคุณสมบัติการแก้ไขและเรียกดู IDE ที่ได้รับการร้องขอมากที่สุด และเราจะปรับปรุงระบบประเภทของ Flow เพื่อให้นักพัฒนาเขียนโค้ดที่ถูกต้องและปลอดภัยได้ง่ายขึ้น เรา จะ

ติดต่อคุณในบล็อกนี้ บนGitHubและในช่องทาง Flowtype Discord ของเรา