Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

การมอบหมายวิธีการหลักใน Ruby:คู่มือปฏิบัติ

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

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

ในบทความนี้ เราจะเจาะลึกสามวิธีในการบรรลุการมอบหมายใน Ruby:การใช้การมอบหมายที่ชัดเจน 07 โมดูล และ 14 (สำหรับราง)

มาเริ่มกันเลย!

การมอบหมายใน Ruby

เริ่มต้นด้วยการพูดคุยถึงการมอบหมายอย่างชัดเจน — การเรียกเมธอดภายในเมธอด จากนั้นเราจะสำรวจ 24 ในตัว และวิธีที่โมดูลนี้สามารถปรับปรุงการมอบหมายได้ สุดท้ายนี้ เราจะพูดถึง 31 ซึ่งเป็นเครื่องมือมอบหมายเฉพาะของ Rails พร้อมคุณสมบัติที่มีประโยชน์บางอย่าง

การมอบหมายที่ชัดเจน

ในรูปแบบที่ง่ายที่สุด การมอบหมายสามารถทำได้โดยการเรียกเมธอดอย่างชัดเจนภายในเมธอดอื่น แนวทางนี้มักใช้เมื่อวิธีการมอบหมายเป็นของวัตถุที่แยกจากกัน หรือเมื่อการมอบหมายนั้นง่ายพอที่จะไม่รับประกันการใช้เทคนิคขั้นสูงเพิ่มเติม

การใช้การมอบหมายอย่างชัดเจนใน Ruby นั้นตรงไปตรงมา ลองมาตัวอย่างของ 49 คลาสที่ใช้วัตถุ HP เพื่อพิมพ์ข้อความ:

 

ในตัวอย่างข้างต้น วิธีการพิมพ์ของ 54 คลาสมอบหมายงานการจัดรูปแบบให้กับ 68 อย่างชัดเจน คลาสโดยการเรียกวิธีการจัดรูปแบบ การมอบหมายนี้มอบหมายให้ชั้นเรียนอื่นรับผิดชอบการพิมพ์จากภายนอกด้วยวิธีที่เรียบง่ายและอ่านง่าย

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

นอกจากนี้ การมอบหมายอย่างชัดเจนยังมีประโยชน์เมื่อสร้างอะแดปเตอร์หรือ wrappers รอบไลบรารีบุคคลที่สาม เนื่องจากช่วยให้คุณสามารถแยกการโต้ตอบกับโค้ดภายนอกได้

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

โมดูลส่งต่อของ Ruby

โมดูล Forwardable เป็นไลบรารี Ruby ในตัวที่ให้วิธีการมอบหมายที่มีประสิทธิภาพและยืดหยุ่นมากขึ้นเมื่อเปรียบเทียบกับการมอบหมายอย่างชัดเจน ด้วยการรวมโมดูล Forwardable ไว้ในชั้นเรียนของคุณ คุณจะสามารถเข้าถึงเมธอดเช่น 71 ได้ และ 84 ทำให้การมอบหมายเป็นเรื่องง่าย

หากต้องการเริ่มต้นใช้งานโมดูล Forwardable ให้รวมไว้ในชั้นเรียนของคุณและใช้ 90 และ103 วิธีการมอบหมายวิธีใดวิธีหนึ่งหรือหลายวิธีตามลำดับ เรามาทบทวนตัวอย่างเครื่องพิมพ์ของเราด้วย 111 ใหม่ คลาสและใช้งานโมดูลส่งต่อ:

 

ในตัวอย่างข้างต้น เราใช้ 121 เพื่อมอบหมายวิธีการจัดรูปแบบจากคลาส Formatter หากคุณต้องการมอบหมายหลายวิธีพร้อมกัน คุณสามารถใช้ 136 . ตัวอย่างเช่น ถ้า 144 คลาสมีวิธีเพิ่มเติม เช่น 154 คุณสามารถมอบหมายให้พวกเขาได้ดังนี้:

 

เมื่อใช้โมดูลส่งต่อได้ มีข้อเสียที่สำคัญบางประการที่ควรพิจารณา:

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

สำหรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับโมดูล Forwardable โปรดดูเอกสาร Forwardable

162 สำหรับแอปพลิเคชัน Rails

176 เป็นยูทิลิตี้การมอบหมายที่จัดทำโดย Rails โดยนำเสนอไวยากรณ์ที่กระชับสำหรับการมอบหมายวิธีการให้กับวัตถุที่เกี่ยวข้อง แม้ว่าจะมีความคล้ายคลึงกันกับโมดูล Forwardable ในตัวของ Ruby แต่ 185 เสนอตัวเลือกและคุณสมบัติเพิ่มเติมที่ปรับแต่งสำหรับแอปพลิเคชัน Rails

หากต้องการใช้ 190 เพียงเรียกวิธีการมอบหมายในชั้นเรียนของคุณและระบุวิธีการที่จะมอบหมายพร้อมกับวัตถุเป้าหมาย เรามาทบทวนตัวอย่างเครื่องพิมพ์และฟอร์แมตเตอร์อีกครั้ง และใช้การมอบหมายโดยใช้204 :

 

219 เสนอตัวเลือกและคุณสมบัติเพิ่มเติมที่เป็นประโยชน์ในสถานการณ์ต่างๆ ตัวอย่างเช่น คุณสามารถใช้ 220 ตัวเลือกเพื่อเติมคำนำหน้าให้กับวิธีการที่ได้รับมอบหมาย หากคุณต้องการมอบหมายวิธีการหลายรายการพร้อมกัน เพียงแสดงรายการไว้หน้า 239 ตัวเลือก:

 

สิ่งนี้จะสร้างวิธีการเช่น 241 , 252 และ 265 ใน 279 คลาสมอบหมายวิธีการที่เกี่ยวข้องใน 289 ชั้นเรียน

291 มักใช้ในโครงการ Rails ในโลกแห่งความเป็นจริงเพื่อมอบหมายวิธีการระหว่างโมเดลหรือวัตถุที่เกี่ยวข้อง ตัวอย่างเช่น หากคุณมี 303 รุ่นที่ 312 องค์กร คุณสามารถมอบหมายวิธีการตั้งชื่อได้จาก 328 สร้างโมเดลเป็น 331 โมเดลเช่นนี้:

 

ซึ่งช่วยให้คุณเข้าถึงชื่อองค์กรผ่านวัตถุผู้ใช้:344 .

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

สำหรับข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับ 362 และตัวเลือกทั้งหมดที่มี โปรดดูเอกสารประกอบของ Rails ActiveSupport

การเปรียบเทียบเทคนิคการมอบหมาย

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

โมดูล Forwardable ซึ่งมีอยู่ใน Ruby นำเสนอวิธีการมอบหมายวิธีการที่มีประสิทธิภาพมากขึ้น โดยใช้ 371 และ 389 คุณสามารถมอบหมายวิธีการหนึ่งหรือหลายวิธีได้โดยกระชับ

395 ซึ่งเป็นส่วนหนึ่งของไลบรารี ActiveSupport ของ Rails จัดให้มีวิธีการประกาศเพื่อจัดการการมอบหมายวิธีการ ด้วยไวยากรณ์ที่สะอาดตาและตัวเลือกเพิ่มเติม เช่น คำนำหน้า จึงเป็นเครื่องมือที่แสดงออกในบริบทของ Rails เมื่อเปรียบเทียบกับการมอบหมายอย่างชัดเจน406 แสดงออกได้ชัดเจนกว่าและมีรายละเอียดน้อยกว่า โดยเฉพาะอย่างยิ่งเมื่อมอบหมายวิธีการหลายวิธี อย่างไรก็ตาม ต้องใช้ Rails จึงไม่เหมาะสำหรับโครงการ Ruby ที่ไม่ใช่ Rails

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

สรุป

จากการมอบหมายอย่างชัดเจนไปจนถึงการใช้โมดูล Forwardable ในตัวหรือเฉพาะ Rails426 แต่ละเทคนิคมีประโยชน์และข้อเสียเฉพาะตัว เทคนิคที่คุณควรเลือกขึ้นอยู่กับบริบทเฉพาะของคุณ ลักษณะของโปรเจ็กต์ และสไตล์การเขียนโค้ดส่วนตัวของคุณ

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

ขอให้มีความสุขในการมอบหมาย!

ปล. หากคุณต้องการอ่านโพสต์ Ruby Magic ทันทีที่เผยแพร่ สมัครรับจดหมายข่าว Ruby Magic ของเราและไม่พลาดแม้แต่โพสต์เดียว! การมอบหมายวิธีการหลักใน Ruby:คู่มือปฏิบัติ

เจฟฟ์ มอร์เฮาส์

Jeff Morhous ผู้เขียนรับเชิญของเราเป็นวิศวกรซอฟต์แวร์ที่เขียนโค้ดและแก้ไขข้อบกพร่องเพื่อช่วยให้ผู้ป่วยได้รับยาที่พวกเขาต้องการ ปัจจุบันนี้เขามุ่งเน้นไปที่การสร้างเว็บแอปพลิเคชันด้วย Ruby on Rails แต่ในอดีตเขาเคยใช้ Swift, Java และ Kotlin สำหรับการพัฒนา iOS และ Android

บทความทั้งหมดโดย Jeff Morhous