หากคุณเปลี่ยนชื่อเมธอดมันจะไม่โหลดมากเกินไปอีกต่อไป ในและของตัวเองเกินพิกัดไม่จำเป็นต้องทำให้โค้ดอ่านน้อยลง แต่มันสามารถทำให้การใช้งานยากขึ้นถ้าไวยากรณ์ไม่ชัดเจน
หลายภาษาใช้วิธีการโอเวอร์โหลดเป็นวิธีนำเสนออินเทอร์เฟซสำหรับฟังก์ชันการทำงานที่พารามิเตอร์อาจเป็นทางเลือกและค่าเริ่มต้นสำหรับพารามิเตอร์ทางเลือกจะถูกบอกเป็นนัย สิ่งนี้เป็นจริงอย่างยิ่งสำหรับภาษาที่ไม่สนับสนุนไวยากรณ์ของพารามิเตอร์เริ่มต้นในการประกาศวิธีการ
ดังนั้นการทำสิ่งนี้:
void MyMethod(int param1, int param2 = 10)
{
...
}
ช่วยคุณไม่ให้ทำสิ่งนี้:
void MyMethod(int param1)
{
MyMethod(param1, Param2Default);
}
void MyMethod(int param1, int param2)
{
....
}
เป็นสิ่งที่อ่านได้มากขึ้นซึ่งลงมาหาคุณจริงๆ โดยส่วนตัวแล้วฉันชอบตัวเลือกที่สองโดยเฉพาะอย่างยิ่งเมื่อรายการพารามิเตอร์ยาวไปหน่อย แต่ฉันคิดว่ามันไม่สำคัญเลยตราบใดที่คุณมีความสอดคล้องตลอด API ของคุณ
ความยากลำบากในการโอเวอร์โหลดเกิดขึ้นเมื่อคุณต้องการฟังก์ชั่นที่ทำสิ่งเดียวกันและที่คุณต้องการให้รายการพารามิเตอร์เหมือนกัน แต่ประเภทการคืนจะแตกต่างกัน ภาษาส่วนใหญ่ไม่ทราบวิธีแยกความแตกต่างระหว่างสองวิธีที่มีชื่อเหมือนกัน แต่มีประเภทผลตอบแทนต่างกัน ณ จุดนี้คุณต้องคิดเกี่ยวกับการใช้ generics การเปลี่ยนอินเทอร์เฟซพารามิเตอร์หรือเปลี่ยนชื่อหนึ่งในวิธีการของคุณเพื่อระบุความแตกต่างในประเภทผลตอบแทน นี่คือที่การอ่านสามารถกลายเป็นปัญหาใหญ่หากคุณไม่ได้ใช้รูปแบบการตั้งชื่อที่เรียบง่ายและชัดเจนเพื่อจัดการกับสถานการณ์เช่นนี้
การตั้งชื่อวิธีที่มากเกินไปGetSomething()
และGetSomethingEx()
จะไม่พูดอะไรมากมายเกี่ยวกับความแตกต่างระหว่างวิธีการของคุณโดยเฉพาะอย่างยิ่งหากเป็นประเภทผลตอบแทนที่มีความแตกต่างเพียงอย่างเดียว ในอีกทางหนึ่งGetSomethingAsInt()
และGetSomethingAsString()
บอกคุณอีกเล็กน้อยเกี่ยวกับวิธีการที่กำลังทำอยู่และในขณะที่ไม่ได้ใช้งานเกินกำลังอย่างเคร่งครัดให้ระบุว่าทั้งสองวิธีทำสิ่งที่คล้ายกัน แต่คืนค่าประเภทต่าง ๆ ฉันรู้ว่ามีวิธีอื่นที่คุณสามารถตั้งชื่อวิธีการได้อย่างไรก็ตามเพื่อจุดประสงค์ในการอธิบายจุดตัวอย่างที่หยาบเหล่านี้ควรทำ
ในตัวอย่าง OPs การเปลี่ยนชื่อไม่จำเป็นอย่างเคร่งครัดเพราะพารามิเตอร์เมธอดนั้นแตกต่างกันไป ในที่สุดมันมาลงกับประเภทของอินเทอร์เฟซที่คุณต้องการให้ผู้ใช้ของคุณเห็น การตัดสินใจว่าจะไม่ให้มากเกินไปไม่ควรทำเพียงลำพังบนพื้นฐานของการรับรู้ของคุณเองว่าอ่านง่าย เช่นการโอเวอร์โหลดวิธีทำให้อินเทอร์เฟซ API ง่ายขึ้นและลดจำนวนวิธีที่นักพัฒนาอาจต้องจำไว้ในทางกลับกันมันสามารถทำให้อินเทอร์เฟซยุ่งเหยิงในระดับที่ต้องการให้นักพัฒนาอ่านเอกสารวิธีการเพื่อทำความเข้าใจว่า วิธีการใช้ในขณะที่มีวิธีการที่มีชื่อคล้ายกัน แต่สามารถอธิบายได้ชัดเจนยิ่งขึ้นเพียงแค่อ่านชื่อวิธีการตามวัตถุประสงค์