จากหนังสือ
Refactoring Improving Design Existing Code
บทที่ 6 Composing Methods
Extract Method
การแยก code ส่วนนึงออก โดยพิจารณาจาก
- มี code ส่วนนี้เป็นเนื้อหาย่อยของชื่อ method หรือไม่
- มี comment ที่บอกว่า code ส่วนนี้เป็นอีกเรื่องนึงที่ทำงาน
เราก็ลอง extract method ออกไป แต่ให่เราคำนึงถึงชื่อที่ตั้งให้ method ด้วยน่ะว่า
- ชื่อต้องสื่อถึงการทำงานของ code ที่ extract ออกไป
Example
Example: No Local Variables
Example: Using Local Variables
Example: Reassigning a Local Variable
แล้ว rename
outstanding =>
result เพื่อให้เข้าใจง่ายของการทำงานใน method นี้
Next Example
Inline Method
การยุบ Method ที่ไม่จำเป็นต้องมี อาจจะพิจารณาได้จาก
- เรียกจากที่เดียว
- method ทำงานแค่ 1 บรรทัด
Example
Inline Temp
การยุบ Object Temp ที่เรียกใช้งานเพียงครั้งเดียว
Example
Replace Temp with Query
การยุบ Object ที่เป็นการคิด หรือทำอะไรเพียงเล็กน้อย แล้ว Extract Method ออกไป
Example
Example
ใส่ final ไว้เพื่อให้มั่นใจว่าจะได้รับการ assign value เพียงครั้งเดียว
Introduce Explaining Variable
ค่าที่มีที่มาเพียงอย่างเดียวหรือเงื่อนไขชัดเจนสามารถแยกออกไปได้
Example
Example
Example with Extract Method
Split Temporary Variable
ค่าของ temp เป็นคนละเรื่องกัน ก็ควรแยกชื่อกัน เพื่อความเข้าใจที่ง่ายกว่า
Example
การใช้ object มาเป็น temp กับ loop ก็อาจจะมีปัญหาได้
Example
Remove Assignments to Parameters
ไม่ใช้ Object ที่ส่งมาโดยตรง
Example
Replace Method with Method Object
Example
Substitute Algorithm
Example