Long Method
Long Method
คือ method ที่ code ทำงานยาวๆ หรือทำงานมากกว่า 1 อย่าง มีจำนวนบรรทัดที่มากจนเกินไป อาจส่งผลให้ team members ทำความเข้าใจและ maintain ได้ยากและอาจทำให้การพัฒนาช้าลงเรื่อยๆ
แค่ไหนที่เรียกว่า Long
long method ของแต่ละคนไม่เท่ากัน บางคนอาจจะบอกว่า 15 บรรทัด อีกคน 10 บรรทัด หรือบางคนบอก 58 .. ถ้าความยาวของบรรทัดมันเกินตัวเลขในใจไปแล้ว ให้ลองเริ่มตั้งคำถามว่า code ใน method นี้ยังทำงานเพื่อจุดประสงค์ 1 อย่างอยู่หรือป่าว 🤔
A heuristic
หนังสือ Refactoring แนะนำว่า เมื่อไรก็ตามที่เราจำเป็นต้อง comment code เพื่ออะไรอธิบายว่า method นี้ไว้ทำอะไร เราควรเขียนเป็น method แทน ใน method นั่น จะมี code ที่เราต้องการ comment แม้ว่าจะมีแค่บรรทัดเดียวก็ตาม Martin Fowler และ Kent Beck ให้เหตุผลว่า กุญแจสำคัญที่แท้จริงในการทำให้ method เล็กๆ เข้าใจได้ง่ายคือการตั้งชื่อที่ดี หากคุณมีชื่อที่ดีสำหรับ method คุณไม่จำเป็นต้อง jump to method เพื่อดูว่ามันทำงานยังไง หรือ comment เพื่อบอกว่ามันคืออะไร
Extract Method
วิธีการที่คุณจะเปลี่ยนจาก long method เป็น small functions คือ Extract Method ปัจจุบัน IDE มี Build in Refactor สะดวกในการทำสิ่งนี้มากกกกก ❤️
Introduce Parameter Object
ถ้า method มีการประกาศ parameters ที่มากจนเกินไป หลังจาก Extract Method ต้องส่ง parameters จำนวนมากตามไปด้วย มันจะทำให้ method อ่านยากขึ้น สามารถแก้ปัญหาด้วย Introduce Parameter Object
if-then/else, switch, loops
- if-then/else สามารถแยกนิพจน์ที่เป็นส่วนของเงื่อนไข โดยใช้ Decompose Conditional
- switch ที่มี statement ขนาดใหญ่สามารถ Extract Method และให้ case เป็นตัวเรียกใช้งาน method อีกที
- loops แยกลูปและ code ภายในลูปเป็น method ของตัวเอง ถ้าในลูปมีการทำงานมากกว่า 1 อย่างให้ลองใช้ Split Loopd เพื่อแยกการทำงานออกจากกัน