เกินหรือพารามิเตอร์เสริม


10

เมื่อฉันมีฟังก์ชั่นที่อาจหรืออาจไม่ได้รับพารามิเตอร์ที่แน่นอนมันจะดีกว่าหรือไม่ที่จะทำงานเกินพิกัดหรือเพื่อเพิ่ม args เพิ่มเติม

หากแต่ละคนมีอัพและดาวน์ - ฉันจะใช้แต่ละอันเมื่อใด


จากมุมมองการเพิ่มประสิทธิภาพการมีพารามิเตอร์ทางเลือกเป็นตัวเลือกที่ดีกว่า
Maneet Puri

คำตอบ:


12

หากภาษารองรับภาษาเหล่านั้นอย่างเหมาะสม (เช่นประเภทความปลอดภัย (ถ้ามี)) ฉันต้องการข้อโต้แย้งเพิ่มเติมเนื่องจากเหตุผลต่อไปนี้:

  • พวกเขาถ่ายทอดความตั้งใจของคุณได้ดีขึ้นดังนั้นจึงไม่มีใครสงสัยว่าฟังก์ชั่นการโอเวอร์โหลดของคุณจะทำอะไรที่แตกต่างออกไป
  • โค้ดน้อยที่จะรักษาแม้ว่าฟังก์ชันโอเวอร์โหลดจะมอบให้กับผู้ที่ครอบคลุมมากกว่าเท่านั้น หากคุณต้องการเปลี่ยนชื่อฟังก์ชั่นในภายหลังคุณมีอย่างน้อย 3 แห่งที่ต้องทำ (สองคำจำกัดความ + หนึ่งการโทร)
  • คอมไพเลอร์ (ถ้ามี) อาจสร้างไบนารีที่เล็กลง
  • อาร์กิวเมนต์ตัวเลือกจะขยายใหญ่ขึ้นอย่างน้อยในบางภาษา จะทำอย่างไรถ้าคุณต้องการมีอาร์กิวเมนต์ที่เป็นตัวเลือก 3 ข้อที่สามารถผสมและจับคู่ได้ เพื่อความยืดหยุ่นอย่างเต็มที่คุณต้องใช้งานเกิน 6 ครั้งในการดำเนินการดังกล่าว
  • หากเป็นวิธีการของวัตถุการโอเวอร์โหลดหลายครั้งจะขัดขวางการใช้การแทนที่ในคลาสย่อยอย่างมาก

คุณไม่ต้องการ 8 ใช่ไหม สามข้อโต้แย้งไม่จำเป็นa, bและcมีความเป็นไปเหล่านี้: ไม่มีอะไร A, B, C, AB, AC, BC, abc มันเป็น2^nชนิดที่แตกต่างกันไม่ได้n!
มาร์ค

0

สมมติว่าเป็นสถานการณ์แบบคอนสตรัคเตอร์: ฉันมักจะเลือกรูปแบบการสร้างอย่างคล่องแคล่วเพื่อป้องกันสถานการณ์ที่มีตัวเลือกมากมาย

เช่น. Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))เป็นตัวอย่างของการเรียกใช้อินเตอร์เฟสผู้สร้างอย่างคล่องแคล่วนำไปใช้ใน Guava

แน่นอนว่าตอนนี้คุณต้องการวัตถุแยกต่างหากเพื่อรักษาสถานะผู้สร้างของคุณ แต่คุณลดความซับซ้อนโดยรวมโดยแยกพฤติกรรมการสร้างจากพฤติกรรมของสิ่งก่อสร้าง


สิ่งนี้ไม่ตอบคำถาม
Andy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.