เพื่อให้คำถามนี้ตอบได้สมมติว่าค่าใช้จ่ายของความคลุมเครือในใจของโปรแกรมเมอร์นั้นแพงกว่าการกดแป้นพิเศษเล็กน้อย
ระบุว่าทำไมฉันจะอนุญาตให้เพื่อนร่วมทีมของฉันหนีไปโดยไม่ใส่หมายเหตุประกอบพารามิเตอร์ฟังก์ชันของพวกเขา ใช้โค้ดต่อไปนี้เป็นตัวอย่างของสิ่งที่อาจเป็นโค้ดที่ซับซ้อนกว่านี้:
let foo x y = x + y
ตอนนี้การตรวจสอบอย่างรวดเร็วของคำแนะนำเครื่องมือจะแสดงให้คุณเห็นว่า F # ได้พิจารณาแล้วว่าคุณต้องการให้ x และ y เป็น ints ถ้านั่นคือสิ่งที่คุณตั้งใจไว้ทุกอย่างก็ดี แต่ฉันไม่รู้ว่านั่นคือสิ่งที่คุณต้องการหรือไม่ จะเกิดอะไรขึ้นถ้าคุณสร้างรหัสนี้เพื่อเชื่อมสองสายเข้าด้วยกัน หรือถ้าฉันคิดว่าคุณอาจหมายถึงการเพิ่มคู่? หรือถ้าฉันไม่ต้องการเลื่อนเมาส์ไปเหนือพารามิเตอร์ฟังก์ชันทุกตัวเพื่อกำหนดประเภทของมัน
ตอนนี้ใช้ตัวอย่างนี้:
let foo x y = "result: " + x + y
ตอนนี้ F # สมมติว่าคุณตั้งใจจะเชื่อมสตริงดังนั้น x และ y จึงถูกนิยามเป็นสตริง อย่างไรก็ตามในฐานะที่เป็น schmuck ที่ไม่ดีที่รักษารหัสของคุณฉันอาจดูที่นี่และสงสัยว่าบางทีคุณอาจต้องการเพิ่ม x และ y (ints) ด้วยกันแล้วผนวกผลลัพธ์ไปยังสตริงเพื่อจุดประสงค์ของ UI
แน่นอนว่าสำหรับตัวอย่างง่ายๆเช่นนั้นอาจปล่อยไปได้ แต่ทำไมไม่บังคับใช้นโยบายการเพิ่มความคิดเห็นประเภทที่ชัดเจน
let foo (x:string) (y:string) = "result: " + x + y
สิ่งที่เป็นอันตรายในการมีความชัดเจน? แน่นอนว่าโปรแกรมเมอร์สามารถเลือกประเภทที่ไม่ถูกต้องสำหรับสิ่งที่พวกเขากำลังพยายามทำ แต่อย่างน้อยฉันก็รู้ว่าพวกเขาตั้งใจไว้ว่ามันไม่ใช่แค่การกำกับดูแล
นี่เป็นคำถามที่จริงจัง ... ฉันยังใหม่กับ F # และกำลังเป็นที่ประจักษ์แก่ บริษัท ของฉัน มาตรฐานที่ฉันนำมาใช้น่าจะเป็นพื้นฐานสำหรับการเข้ารหัส F # ในอนาคตทั้งหมดซึ่งฝังอยู่ในการคัดลอกที่ไม่รู้จบที่ฉันมั่นใจว่าจะแทรกซึมวัฒนธรรมสำหรับปีต่อ ๆ ไป
ดังนั้น ... มีอะไรพิเศษเกี่ยวกับการอนุมานของ F # ที่ทำให้มันมีคุณสมบัติที่มีค่าที่จะเก็บไว้ทำหมายเหตุประกอบเมื่อจำเป็นเท่านั้น? หรือผู้ชำนาญการ # # สร้างนิสัยในการเพิ่มความคิดเห็นพารามิเตอร์สำหรับแอปพลิเคชันที่ไม่สำคัญหรือไม่?