ข้ามไปยังเนื้อหา

Glossary

EnglishThai Styleความหมาย
RefactoringRefactoringปรับปรุงโครงสร้าง code โดยที่ behavior ยังเหมือนเดิม
Code SmellCode Smellสัญญาณที่บอกว่า code มีปัญหาโครงสร้าง ยังไม่ใช่ bug
Technical DebtTechnical Debtต้นทุนสะสมจาก code ที่รีบเขียนโดยไม่ดูแลคุณภาพ
Maintainabilitymaintainabilityความง่ายในการแก้ไขและต่อเติม code ในอนาคต
Readabilityreadabilityความง่ายในการอ่านและเข้าใจ code
Complexitycomplexityความซับซ้อนของ code ที่เพิ่ม cognitive load ผู้อ่าน
Couplingcouplingระดับการพึ่งพากันระหว่าง module หรือ class
Cohesioncohesionระดับที่ code ในหน่วยเดียวกันเกี่ยวข้องกัน
Responsibilityresponsibilityหน้าที่หรือเหตุผลที่ class/function มีอยู่
Behaviorbehaviorสิ่งที่ code ทำ — ผลลัพธ์ที่ caller มองเห็นจากภายนอก
Legacy Codelegacy codecode เดิมที่ขาด test และเปลี่ยนได้ยาก
Cognitive Loadcognitive loadจำนวนสิ่งที่ต้องคิดพร้อมกันขณะอ่าน code
Englishทำอะไร
Extract Functionแยก code block ออกมาเป็น function ใหม่ที่มีชื่อ
Extract Classแยก responsibility ออกจาก class ใหญ่เป็น class ใหม่
Inline Functionรวม function ที่ชื่อไม่ได้บอกอะไรเพิ่มกลับเข้า caller
Inline Variableรวม variable ที่ไม่ได้ช่วยอธิบาย กลับไปใส่ใน expression
Move Methodย้าย method ไปอยู่ใน class ที่เกี่ยวข้องกันมากกว่า
Move Fieldย้าย field ไปอยู่ใน class ที่ใช้งานจริง
Rename Variableเปลี่ยนชื่อให้สื่อ intent ชัดขึ้น
Rename Functionเปลี่ยนชื่อ function ให้ตรงกับสิ่งที่ทำจริง ๆ
Encapsulate Fieldห่อหุ้ม field ด้วย getter/setter เพื่อควบคุม access
Extract Variableตั้งชื่อให้ expression ซับซ้อนด้วย variable ที่อธิบาย
Replace Temp with Queryแทน temporary variable ด้วย function ที่ query ค่านั้น
Introduce Parameter Objectรวม parameter ที่มักไปด้วยกันเป็น object เดียว
Replace Conditional with Polymorphismแทน switch/if-else ด้วย subclass หรือ strategy
Split Phaseแบ่ง function ที่ทำสองขั้นตอนออกเป็นสอง function
Replace Magic Literalแทนตัวเลข/string ลอยตัวด้วย named constant
Code Smellอาการวิธีแก้
Long Methodfunction ยาว ทำหลายหน้าที่Extract Function
Large Classclass ใหญ่ มี responsibility มากเกินไปExtract Class
Feature Envymethod สนใจ data ของ class อื่นมากกว่า class ตัวเองMove Method
Duplicate Codelogic เดียวกันปรากฏในหลายที่Extract Function
Data Clumpsparameter ชุดเดียวกันปรากฏในหลาย functionIntroduce Parameter Object
Primitive Obsessionใช้ primitive type แทน object ที่มีความหมายReplace Primitive with Object
Divergent Changeเปลี่ยน class เดียวด้วยเหตุผลหลายอย่างExtract Class
Shotgun Surgeryเปลี่ยนหนึ่งเรื่องแต่ต้องแก้หลาย classMove Method / Move Field
Switch Statementswitch ที่ซ้ำอยู่หลายที่Replace Conditional with Polymorphism
Magic Numberตัวเลขลอยตัวใน code ที่ไม่รู้ความหมายReplace Magic Literal
Dead Codecode ที่ไม่มีใครเรียกแล้วลบทิ้ง
Temporary Fieldfield ที่มีค่าเฉพาะบางสถานการณ์Extract Class
God Objectclass เดียวรู้ทุกอย่างและทำทุกอย่างExtract Class หลายรอบ
  • ไม่มี test รองรับ — refactor โดยไม่มี test คือการเดา
  • ใกล้ปล่อย production — เสี่ยง regression เกินไป
  • ยังไม่เข้าใจ business logic — แก้ผิดจุดแน่นอน
  • เป็น code ที่ยังไงก็กำลังจะลบทิ้งอยู่แล้ว
  • ตรงจุดนั้น performance สำคัญกว่า readability