Java:
การปรับโครงสร้างโค้ด

วิธีทำ:

ลองดูคลาส Java แบบง่ายๆ ที่ต้องการการรีแฟคเตอร์เนื่องจากมีการจัดการและความชัดเจนที่ไม่ดี

public class Calculator {
    public int calc(int op1, int op2, String operation) {
        if (operation.equals("add")) {
            return op1 + op2;
        } else if (operation.equals("subtract")) {
            return op1 - op2;
        } // การดำเนินการอื่นๆ...
    }
}

หลังจากรีแฟคเตอร์ เรามี:

public class Calculator {
    public int add(int operand1, int operand2) {
        return operand1 + operand2;
    }

    public int subtract(int operand1, int operand2) {
        return operand1 - operand2;
    }

    // การดำเนินการอื่นๆ...
}

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

ลึกเข้าไป:

การรีแฟคเตอร์มีต้นกำเนิดในชุมชน Smalltalk ด้วยความสนใจในความสามารถในการอ่านโค้ดและการออกแบบที่เน้นวัตถุ (object-oriented design) แต่มันจริงๆ เริ่มติดตลาดในโลกของ Java ในช่วงปลายปี 90 และต้นปี 00 โดยเฉพาะหลังจากการเผยแพร่หนังสือสำคัญของ Martin Fowler ที่ชื่อว่า “Refactoring: Improving the Design of Existing Code.”

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

รายละเอียดการดำเนินการเมื่อรีแฟคเตอร์ใน Java (หรือภาษาโปรแกรมอื่นๆ) ต้องการความเข้าใจเกี่ยวกับกลิ่นโค้ด — ตัวบ่งชี้ของปัญหาลึกๆ ในโค้ด กลิ่นบางอย่างรวมถึงเมธอดยาวๆ, คลาสใหญ่, โค้ดที่ซ้ำกัน และการใช้งานรูปแบบพื้นฐานมากเกินไป โดยการใช้รูปแบบการรีแฟคเตอร์ เช่น Extract Method, Move Method, หรือ Replace Temp with Query, นักพัฒนาสามารถจัดการกับกลิ่นเหล่านี้ได้อย่างเป็นระบบในขณะที่รักษาโค้ดให้ทำงานได้ตลอดเวลา

เครื่องมืออัตโนมัติ เช่น การรองรับการรีแฟคเตอร์ของ IntelliJ IDEA หรือปลั๊กอินสำหรับ Eclipse สามารถช่วยในกระบวนการด้วยการทำ automation การรีแฟคเตอร์ เช่น การเปลี่ยนชื่อตัวแปร เมธอด และคลาส การแยกเมธอดหรือตัวแปรออกมา และการย้ายเมธอดหรือคลาสไปยังแพ็คเกจหรือเนมสเปซที่แตกต่างกัน

ดูเพิ่มเติม:

แต่ละทรัพยากรนี้ให้พื้นฐานในการเข้าใจหลักการของการรีแฟคเตอร์หรือเครื่องมือที่สามารถใช้ในการนำหลักการเหล่านี้ไปใช้ได้