ในช่วงที่ฉันเป็นนักพัฒนาเว็บ ฉันต้องจัดการกับโค้ด JavaScript มากมาย ฉันชอบ JavaScript ไม่มีการถามคำถามใดๆ แต่บางครั้งฉันก็เกลียดโค้ดที่เขียนโดยคนที่ไม่ยอมรับฟีเจอร์ภาษา เวลาที่ผิดพลาดมากที่สุดในความคิดของฉันคือในพารามิเตอร์ของฟังก์ชัน ฟังก์ชันที่มีพารามิเตอร์จำนวนมากมักจะล้าสมัยและไม่สามารถเปลี่ยนแปลงได้ในหลายๆ ตำแหน่ง นี่เป็นประสบการณ์ที่น่าหงุดหงิดสำหรับนักพัฒนารายอื่นที่ต้องเปลี่ยนแปลงไปมาก แต่ให้เราจัดการกับปัญหานี้ในบทความบล็อกนี้

ลองจินตนาการถึงฟังก์ชันที่เรียกจุดสิ้นสุด REST API พร้อมด้วยพารามิเตอร์จำนวนมาก การเรียก HTTP นี้จะเป็น GET ที่มีตัวกรองจำนวนมาก ในตัวอย่างของเรา ฉันจะใช้การเรียก API เพื่อรับไทม์ไลน์ทวีตของ Twitter คุณสามารถดูเอกสารได้ที่นี่: https://developer.twitter.com/en/docs/twitters/timelines/api-reference/get-statuses-home_timeline

ให้เราสร้างฟังก์ชันง่ายๆ ของเราขึ้นมา จะใช้พารามิเตอร์แบบสอบถามเป็นอาร์กิวเมนต์ของฟังก์ชัน:

จากนั้นฟังก์ชันจะถูกเรียกดังนี้:

นี่ดูเหมือนค่อนข้างสมเหตุสมผล แต่ตอนนี้คิดถึงลูกค้าแล้ว ฟังก์ชันนี้ถูกใช้ 100 ครั้งในฐานโค้ดของคุณ (ให้เราสมมุติตามนี้) และตอนนี้ Twitter กำลังเปลี่ยน API เพื่อรวมพารามิเตอร์อื่น คุณจะต้องเปลี่ยนฟังก์ชันของตรรกะทางธุรกิจที่เรียก API ของคุณให้เป็นดังนี้:

ปัญหาตอนนี้คือคุณต้องเปลี่ยนผู้เรียกฟังก์ชันทุกคนเพื่อรวมอาร์กิวเมนต์สุดท้าย วิธีแก้ปัญหานี้คือการเพิ่มพารามิเตอร์เริ่มต้น รองรับตั้งแต่ ES6 ดังนั้นให้เราปรับโครงสร้างฟังก์ชันใหม่เพื่อใช้พารามิเตอร์เริ่มต้นเป็นพารามิเตอร์ตัวสุดท้าย

แก้ไขปัญหาแล้ว :) คุณไม่จำเป็นต้องเปลี่ยนผู้เรียกฟังก์ชันทั้งหมด ปัญหาคือถ้ารวมพารามิเตอร์ที่ต้องการแล้ว คุณจะต้องผนวกพารามิเตอร์เหล่านั้นเข้ากับฟังก์ชันและเปลี่ยนผู้เรียกฟังก์ชันทั้งหมด ไม่สามารถปรับขนาดได้จริงๆ หนังสือ Clean Code มีวิธีแก้ปัญหาง่ายๆ: หากมีพารามิเตอร์มากกว่าสองหรือสามพารามิเตอร์ในฟังก์ชัน ให้ระบุพารามิเตอร์เป็นวัตถุเดียว ดังนั้นให้เราแปลงฟังก์ชันเพื่อใช้วัตถุแทนการใช้พารามิเตอร์หลายตัว

ถึงกระนั้น ดูเหมือนว่าจะละเอียดมากและพารามิเตอร์เริ่มต้นก็หายไปด้วย 🙋

มีคุณลักษณะ ECMAScript สองประการที่สามารถช่วยเราได้ที่นี่:

  • การทำลายล้างวัตถุ
  • พารามิเตอร์เริ่มต้น (เฮ้ เราเคยใช้มันมาก่อน)

ดังนั้นสิ่งที่เราจะทำที่นี่ตอนนี้ค่อนข้างง่าย: เราจะทำลายวัตถุที่กำหนดเป็นพารามิเตอร์ให้กับคุณสมบัติและเพิ่มพารามิเตอร์เริ่มต้นสำหรับคุณสมบัติที่ทำลายโครงสร้าง new_parameter :

ตอนนี้เรายังคงสามารถเรียกใช้ฟังก์ชันกับอ็อบเจ็กต์ได้ แต่ยังมีประโยชน์ในด้านการขยายและพารามิเตอร์เริ่มต้นอีกด้วย

อีกเหตุผลที่ดีในการใช้อ็อบเจ็กต์เป็นพารามิเตอร์ของฟังก์ชันก็คือ คุณต้องตั้งชื่อคุณสมบัติในฟังก์ชันผู้เรียก นี่เป็นเอกสารทางอ้อมและช่วยได้มากในการอ่านโค้ดสำหรับนักพัฒนารายอื่น ข้อได้เปรียบหลักที่นี่คือความสามารถในการขยายฟังก์ชันการทำงานซึ่งมีความสำคัญอย่างยิ่งในการพัฒนาซอฟต์แวร์สมัยใหม่ เนื่องจากฟีเจอร์จะเปลี่ยนไปและโค้ดจะถูกย้ายไปรอบๆ ฟังก์ชันการทำงานแบบไดนามิกและขยายได้จึงเป็นกุญแจสำคัญ

ขอบคุณสำหรับการอ่านสิ่งนี้ คุณเจ๋ง🏽

หากคุณมีข้อเสนอแนะหรือต้องการเพิ่มบางสิ่งบางอย่างในบทความนี้เพียงแสดงความคิดเห็นที่นี่ คุณยังสามารถติดตามฉันได้ที่ twitter หรือไปที่ เว็บไซต์ส่วนตัว ของฉันเพื่อติดตามบทความในบล็อกของฉันและอื่นๆ อีกมากมาย