18 คะแนน โดย kciter1 2024-07-22 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • ประเภทข้อมูลคือสัญญาที่เข้มงวดซึ่งฟังก์ชันและข้อมูลต้องปฏิบัติตาม
  • ประเภทข้อมูลคือเซตของค่าที่ค่าหนึ่ง ๆ สามารถสังกัดได้
  • ประเภทข้อมูลสามารถถูกแปลงผ่านฟังก์ชันได้ และด้วยสิ่งนี้ขอบเขตจึงสามารถเปลี่ยนแปลงได้
    • ฟังก์ชันเชิงหนึ่งต่อหนึ่ง - การแปลงจากประเภทที่มีขอบเขตเล็กไปเป็นประเภทที่มีขอบเขตใหญ่
    • ฟังก์ชันทั่วถึง - การแปลงจากประเภทที่มีขอบเขตใหญ่ไปเป็นประเภทที่มีขอบเขตเล็ก
    • ฟังก์ชันเชิงหนึ่งต่อหนึ่งและทั่วถึง - จับคู่กันแบบหนึ่งต่อหนึ่ง
  • สามารถแสดงอินพุตและเอาต์พุตของตรรกะด้วยประเภทข้อมูลได้
    • นั่นหมายความว่าสามารถนามธรรมตรรกะผ่านประเภทข้อมูลได้
    • แสดงอินพุตและเอาต์พุตด้วยประเภทข้อมูล และออกแบบตรรกะผ่านสิ่งนี้ได้
  • สามารถตั้งชื่อให้ประเภทข้อมูลพื้นฐานเพื่อแยกเป็นอีกประเภทหนึ่งได้
  • หากใช้ระบบประเภทข้อมูล ก็สามารถแก้ปัญหาต่าง ๆ ได้
    • การทำให้เป็นทั่วไปด้วยเจเนอริก
    • การจำกัดขอบเขตด้วยแฟนทอมไทป์
    • การจำกัดพฤติกรรมด้วยยูเนียนไทป์ (หรือซัมไทป์)
    • การจัดการ TODO ด้วยประเภทข้อมูลขั้นต่ำ
    • การสร้าง finite state machine ด้วยประเภทข้อมูล
    • การตรวจสอบความถูกต้องด้วย dependent type
  • การพัฒนาแบบขับเคลื่อนด้วยประเภทข้อมูลคือแนวทางที่กำหนดประเภทข้อมูลก่อน แล้วจึงเขียนโค้ดผ่านสิ่งนั้น
  • หากต้องการ การพัฒนาแบบขับเคลื่อนด้วยประเภทข้อมูลสามารถนำไปใช้ได้กับทุกที่ และเริ่มจากการกำหนดผลลัพธ์ของแต่ละขั้นตอนเป็นประเภทข้อมูล
  • เมื่อต้องวิเคราะห์ข้อกำหนด ลองนามธรรมมันออกมาเป็นประเภทข้อมูล
  • แม้จะเป็นประเภทข้อมูลพื้นฐานเดียวกัน แต่ถ้าความหมายต่างกัน ก็ควรกำหนดให้เป็นคนละประเภทเพื่อแยกความแตกต่าง
  • หากวิเคราะห์ข้อกำหนดและคิดเรื่องประเภทข้อมูลแล้ว ลองนามธรรมตรรกะออกมาเป็นประเภทข้อมูล
    • สามารถนามธรรมได้ในลักษณะอย่าง (String) -> List<Token>
  • การพัฒนาแบบขับเคลื่อนด้วยประเภทข้อมูลเข้ากันได้ดีกับการพัฒนาแบบขับเคลื่อนด้วยการทดสอบ
    • ในแง่ที่กำหนดอินพุตและผลลัพธ์เอาต์พุตไว้ล่วงหน้าแล้วจึงเขียนโค้ด การพัฒนาแบบขับเคลื่อนด้วยประเภทข้อมูลและการพัฒนาแบบขับเคลื่อนด้วยการทดสอบมีความคล้ายกัน
    • หากการพัฒนาแบบขับเคลื่อนด้วยประเภทข้อมูลสามารถตรวจสอบความเสถียรได้ล่วงหน้าในเวลาคอมไพล์ด้วยระบบประเภทข้อมูล การพัฒนาแบบขับเคลื่อนด้วยการทดสอบก็สามารถจับข้อผิดพลาดหรือกรณียกเว้นที่ตรวจไม่พบด้วยประเภทข้อมูลเพียงอย่างเดียวได้ผ่านโค้ดทดสอบ
  • สำหรับผู้ออกแบบ การใช้ระบบประเภทข้อมูลก็เหมือนกับการสร้างกฎของโค้ดสำหรับนักพัฒนาคนอื่น
  • อย่างไรก็ตาม หากกำหนดประเภทข้อมูลอย่างละเอียดทุกจุดจนมีประเภทมากเกินไป หรือคำนิยามของประเภทซับซ้อนเกินไป ก็อาจทำให้เขียนโค้ดยากขึ้นหรือทำให้อ่านยากลง ดังนั้นการรักษาระดับที่เหมาะสมอยู่เสมอจึงเป็นเรื่องสำคัญ

2 ความคิดเห็น

 
chabulhwi 2024-07-23

> ฟังก์ชันหนึ่งต่อหนึ่งคือกรณีที่เซตของค่าที่ถูกแปลงแล้วทำให้โคโดเมนกับเรนจ์ไม่ตรงกัน กล่าวให้ง่ายขึ้นอีกหน่อยคือการแปลงจากชนิดข้อมูลที่มีขอบเขตเล็กไปเป็นชนิดข้อมูลที่มีขอบเขตใหญ่กว่า

ฟังก์ชันหนึ่งต่อหนึ่งหมายถึงฟังก์ชันที่สำหรับตัวแปรสองตัวใด ๆ ที่แตกต่างกัน ภาพของมันก็จะแตกต่างกันด้วย กล่าวคือ สำหรับสมาชิกทุกตัว a และ b ที่อยู่ในโดเมน X ของฟังก์ชันหนึ่งต่อหนึ่ง f ถ้า a ≠ b ก็จะได้ว่า f(a) ≠ f(b) ในคณิตศาสตร์ระดับมัธยมปลายของเกาหลี ฟังก์ชันหนึ่งต่อหนึ่งถูกเรียกว่า 'ฟังก์ชันจับคู่หนึ่งต่อหนึ่ง'

 
kciter1 2024-07-23

ขอบคุณสำหรับคำอธิบายละเอียดมากครับ :) ผมเข้าใจผิดไปเอง อย่างที่เป็นประเด็นที่มีคนทักท้วงผมมาหลายครั้งแล้ว ผมจะศึกษาเพิ่มเติมและเรียบเรียงเนื้อหาใหม่อีกครั้งครับ