วันจันทร์ที่ 13 มิถุนายน พ.ศ. 2554

ตอนที่ 4 Refactoring code

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

เริ่มต้นกันเลย

    • Move.  เป็นคำสั่งที่ใช้ในการย้าย method ไปยัง class ต่างๆ โดยใช้ ฟังก์ชัน Refactor => Move...
    • Pull up. คล้ายกับคำสัง Move แต่จะเป็นการย้ายไปยัง superclass แทน โดยใช้ ฟังก์ชัน Refactor => Pull up...
    • pull down. ตรงข้ามกับ pull up เลย คือย้าย method ลงมาจาก superclass เป็น subclass โดยใช้ ฟังก์ชัน Refactor => Pull down...
    • Change method signature. ปรับเปลี่ยน ค่าต่างๆใน method เช่น access modifier,  return type, method name, parameters เป็นต้น โดยใช้ ฟังก์ชัน Refactor => Chage method signature...
    • Extract method.  ใช้แนวคิดคล้ายๆ encapsulates คือเลือก โคดที่เราจะแตกเป็น method ย่อย โดยใช้ ฟังก์ชัน Refactor => Extract method...
Before







After

    • Extract interface คือเป็นการแตก method ที่เราเลือกให้เป็น interface class กลายเป็น class ต้นแบบไป และ class เดิมโปรแกรมจะสร้าง implements ขึ้นมาให้ โดยใช้ ฟังก์ชัน Refactor => Extract interface...  เช่น
Before
After

    • Use Supertype. คือการเรียกใช้ interface class อย่างตัวอย่างข้างบน เราสามารถเรียกใช้ class B ได้โดยใช้ ฟังก์ชัน Refactor => Use Superype...
    • Extract local variable. เป็นการเปลียนจากข้อความให้เป็นตัวแปร โดยโปรแกรมจะสร้างตัวแปรให้มาให้เรา โดยใช้ ฟังก์ชัน Refactor => Extract local variable...  เช่น
Before

After



    • Inline local variable. ตรงกันข้ามกับ Extract local variable คือแทนที่ตัวแปรเป็นข้อความโดยใช้ ฟังก์ชัน Refactor => Inline...
    • Encapsulate. เปลี่ยนจาก public เป็น private  โดยใช้ ฟังก์ชัน Refactor => Encapsulate filed...
Before









After














    • Extract constant. เปลียนค่าหรือข้อความให้เป็นค่าคงที่โดยใช้ ฟังก์ชัน Refactor => Extract constant...
Bofore





After







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

1 ความคิดเห็น:

  1. ก็โอเคนะครับ แต่ดูเหมือนว่าจะไม่ค่อยสมดุลสักเท่าไร หลัง ๆ มา มีแต่ Eclipse

    ตอบลบ