6
การจัดการโดยไม่ทราบชื่อพารามิเตอร์ของฟังก์ชันเมื่อคุณเรียกใช้
นี่คือปัญหาการเขียนโปรแกรม / ภาษาที่ฉันต้องการจะได้ยินความคิดของคุณ เราได้พัฒนาข้อตกลงที่โปรแกรมเมอร์ส่วนใหญ่ (ควร) ปฏิบัติตามซึ่งไม่ได้เป็นส่วนหนึ่งของไวยากรณ์ภาษา แต่ให้บริการเพื่อทำให้โค้ดอ่านง่ายขึ้น แน่นอนว่าสิ่งเหล่านี้เป็นเรื่องของการถกเถียงอยู่เสมอ แต่อย่างน้อยก็มีแนวคิดหลักบางประการที่โปรแกรมเมอร์ส่วนใหญ่เห็นด้วย การตั้งชื่อตัวแปรของคุณอย่างเหมาะสมตั้งชื่อโดยทั่วไปทำให้บรรทัดของคุณไม่ยาวเกินเหตุหลีกเลี่ยงการใช้งานที่ยาวนานห่อหุ้มสิ่งต่าง ๆ อย่างไรก็ตามมีปัญหาที่ฉันยังไม่พบใครแสดงความคิดเห็นและอาจเป็นหนึ่งในกลุ่มที่ใหญ่ที่สุด มันเป็นปัญหาของการโต้แย้งที่ไม่ระบุตัวตนเมื่อคุณเรียกใช้ฟังก์ชัน ฟังก์ชันมาจากคณิตศาสตร์โดยที่ f (x) มีความหมายชัดเจนเพราะฟังก์ชั่นมีคำจำกัดความที่เข้มงวดมากขึ้นซึ่งมักจะใช้ในการเขียนโปรแกรม ฟังก์ชั่นที่บริสุทธิ์ในคณิตศาสตร์สามารถทำอะไรได้น้อยกว่ามากในการเขียนโปรแกรมและพวกเขาเป็นเครื่องมือที่สง่างามกว่ามากพวกเขามักจะโต้แย้งเพียงครั้งเดียว หากฟังก์ชั่นนั้นมีหลายอาร์กิวเมนต์มันมักจะเป็นเพียงมิติเพิ่มเติมของโดเมนของฟังก์ชัน กล่าวอีกนัยหนึ่งอาร์กิวเมนต์ไม่สำคัญกว่าอีกอาร์กิวเมนต์ พวกเขาได้รับคำสั่งอย่างชัดเจนแน่นอน แต่นอกจากนั้นพวกเขาไม่มีการจัดลำดับความหมาย ในการเขียนโปรแกรมเรามีอิสระในการกำหนดฟังก์ชั่นและในกรณีนี้ฉันจะเถียงว่ามันไม่ได้เป็นสิ่งที่ดี สถานการณ์ทั่วไปคุณมีฟังก์ชั่นที่กำหนดเช่นนี้ func DrawRectangleClipped (rectToDraw, fillColor, clippingRect) {} ดูคำจำกัดความถ้าฟังก์ชั่นเขียนอย่างถูกต้องมันชัดเจนว่ามันคืออะไร เมื่อเรียกใช้ฟังก์ชั่นนี้คุณอาจมีเวทย์มนตร์ intellisense / code ที่เกิดขึ้นใน IDE / โปรแกรมแก้ไขที่จะบอกคุณว่าอาร์กิวเมนต์ต่อไปควรเป็นอย่างไร แต่เดี๋ยวก่อน. หากฉันต้องการสิ่งนั้นเมื่อฉันกำลังเขียนการโทรจริงๆไม่มีสิ่งที่เราขาดหายไปที่นี่หรือไม่ คนที่อ่านรหัสไม่ได้รับประโยชน์จาก IDE และถ้าพวกเขาข้ามไปที่คำจำกัดความพวกเขาไม่มีความคิดที่สี่เหลี่ยมสองอันที่ผ่านมาเป็นอาร์กิวเมนต์ใช้สำหรับอะไร ปัญหายิ่งไปกว่านั้น หากข้อโต้แย้งของเรามาจากตัวแปรท้องถิ่นบางอย่างอาจมีสถานการณ์ที่เราไม่รู้ด้วยซ้ำว่าข้อโต้แย้งที่สองคืออะไรเพราะเราเห็นชื่อตัวแปรเท่านั้น ยกตัวอย่างบรรทัดโค้ดนี้ DrawRectangleClipped(deserializedArray[0], deserializedArray[1], deserializedArray[2]) …