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