ต่อเนื่องจากบทความที่แล้ว ผมได้เขียนเรื่อง สิ่งสำคัญของผู้ที่เริ่มหัดเรียนเขียนโปรแกรมด้วยภาษา golang จำเป็นต้องรู้และต้องทำ | หลักสูตรเรียนลัด และสัญญาไว้ว่าถ้ามีเวลาเดี๋ยวจะมาเขียนภาคต่อของ golang ก่อนที่เราจะไปที่วิธีการทำ ลองมาทำความเข้ามใจง่าย ๆ เกี่ยวกับการใช้งาน method chaining กันเสียก่อน
method chaining แปลตามตัวคือ method ชื่อ ฟังก์ชันหรือหน้าที่ทำงานอย่างใดอย่างหนึ่งหรือหลาย ๆ อย่างแล้วแต่การออกแบบ ส่วน chaining แปลตรงตัวคือ "โซ่" ในส่วนของการทำงานของ method จะทำงานเชื่อมโยงกันไปเหมือนโซ่นั้นเอง ตัวอย่างเช่น functionA()->functionB()->functionC().... ไปเรื่อย ๆ ข้อดีข้อมันคือมันทำให้ code กระซับขึ้นไม่ต้อง new object ขึ้นมาใหม่ทำให้ลดจำนวนบรรทัดไปได้เยอะเลยทีเดียว ส่วนข้อเสีย ในบางภาษาเช่น php มันไม่สามารถทำการ Jump to function ที่ไม่ใช่ลำดับแรกได้ ใน editor บางตัว อาจจะลำบากหน่อยในช่วงเวลา implement code
สำหรับ developer สายงาน nodejs คงคุ้นเคยกันดีอยู่แล้วในการใช้งานคุณสมบัติข้อนี้ของภาษาโปรแกรม ส่วนตัวผมคิดว่า javascript นี่เป็นภาษาที่สุดยอดของการใช้งาน method chaining เลยก็ว่าได้ สังเกตุจากหลาย ๆบทความที่ผมได้อ่านมามีการพูดถึงและมีตัวอย่างเป็นจำนวนมาก
เอาละเมื่อเข้าใจกันแล้วว่ามันคืออะไร เราลองมาทำกันดีกว่า ตัวอย่างที่ผมทำขึ้นมานี้ จะเป็นการสร้าง method chaining แบบง่าย ๆ โดยผมจะสร้างไพล์ขึ้น 1 ไฟล์ซึ่งประกอบไปด้วย 2 fuction ที่สามารถ chaining กันได้ คือ function setMessage และ function setCode โดย setMessage ทำหน้าที่ รับข้อมูลในรูปแบบสติงแล้วมาเก็บไว้ที่ config -> key -> message ส่วนของ setCode ทำหน้าที่รับข้อมูลในรูปแบบตัวเลขแล้วมาเก็บไว้ที่ config -> key-> code
ในส่วนของการใช้งานก็ง่ายมาก keyword ของกระบวนการนี้มีอยู่สองอย่างคือ
- การคือค่าจาก function ให้เป็น type เดิมที่รับเข้ามาสังเกตในวงเล็บแรกที่ implement struct ของ config มา และตรง repsonse ก็คืนค่า struct ของ config กลับไป
- การเรียกใช้งาน มีความจำเป็นต้อง new struct ของ config นั้นขึ้นมาเสียก่อน แล้วเก็บไว้ในตัวแปรจากนั้นก็ สามารถเรียกใช้ method chaining ผ่านทางตัวแปรนั้นได้เลย
ตัวอย่าง code มีดังต่อไปนี้
สำหรับบทความนี้ผมขอจบไว้เพียงเท่านี้ก่อน หากมีคำถามหรือข้อสงสัยเพิ่มเติมสามารถเขียนความคิดเห็นได้ด้านล่างนี้ครับ ถ้ามีเวลาผมจะเขียนบทถัดไปตามที่ได้สัญญาไว้ฝากติดตามกันด้วยนะครับ
0 ความคิดเห็น:
แสดงความคิดเห็น