Các kỹ thuật cải tiến mã lệnh xấu (code smells)
Lời khuyên từ các nhà phát triển phần mềm hiện đại là trong tất cả các trường hợp, chúng ta đều phải dành thời gian cho việc refactoring. Đây là công việc mà chúng ta phải thực hiện thường xuyên trong chu kì phát triển và bảo dưỡng phần mềm trong các tình huống:
- Khi thêm chức năng mới
- Trong quá trình kiểm tra và sửa lỗi (debugging)
- Khi duyệt chương trình từ mã nguồn do người khác viết
Danh mục các kỹ thuật refactoring
STT | Kỹ thuật Refactoring | Diễn giải/Mục đích sử dụng |
1 | Add Parameter | Bổ sung tham số cho phương thức |
2 | Change Signature | Thay đổi tính chất/đặc trưng của phương thức |
3 | Change Value/Reference to Reference/Value | Hoán chuyển qua lại giữa giá trị và tham chiếu |
4 | Collapse Hierarchy | Hợp nhất thành một lớp nếu 2 lớp cha và con (kế thừa) có ít sự khác biệt. |
5 | Convert Method/ Property to Property/ Method | Chuyển đổi qua lại giữa phương thức và đặc tính lớp |
6 | Consolidate Conditional Expression | Tạo mới một phương thức từ việc hợp nhất các biểu thức điều kiện |
7 | Consolidate Duplicate Conditional Fragments | Hợp nhất và di chuyển các đoạn trùng lặp ra bên ngoài thân câu lệnh điều kiện |
8 | Decompose Conditional | Tạo mới phương thức từ các câu điều kiện rẽ nhánh |
9 | Duplicate Observed Data | Đa hình dữ liệu |
10 | Encapsulate Field | Chuyển đổi thuộc tính chung thành riêng |
11 | Extract Method/Class/ Interface/ Hierarchy | Trích xuất và định nghĩa mới phương thức/lớp/giao diện/quan hệ kế thừa |
12 | Form Template Method | Đồng nhất các phương thức ở lớp con và dịch chuyển lên lớp cha |
13 | Hide Delegate | Tạo các phương thức trung gian |
14 | Inline Method/Temp/Class | Hợp nhất các phương thức/biến tạm/lớp lại với nhau |
15 | Introduce Foreign Method | Tạo ra một phương thức trong một lớp client có tham số là một đại diện của một lớp server. |
16 | Introduce Explaining Variable | Thay thế kết quả của biểu thức hoặc một phần của biểu thức vào biến tạm. |
17 | Introduce Local Extension | Tạo một lớp mới chứa các phương thức mở rộng đi kèm với một lớp con hoặc một lớp bao |
18 |
Introduce Null Object | Thay thế giá trị Null bởi đối tượng Null |
19 | Move Method/Field | Dịch chuyển phương thức/thuộc tính giữa các lớp |
20 | Promote Local Variable to Parameter | Chuyển biến cục bộ thành tham số của phương thức |
21 | Push Down Field/Method | Phân rã thuộc tính/phương thức về lớp con |
22 | Pull Up Field/Method | Tổng quát hóa thuộc tính/phương thức lên lớp cha |
23 | Remove Redundant Parameter/Field/ Conditional/Middle Man | Xóa bỏ các dữ liệu dư thừa(tham số của phương thức, thuộc tính lớp, điều kiện rẽ nhánh, phương thức trung gian) |
24 | Rename Parameter/ Variable/ Method | Đổi tên tham số/ biến/ phương thức |
25 | Replace Array with Object | Thay thế mảng bởi đối tượng với phần tử của mảng tương ứng với thuộc tính của đối tượng |
26 | Replace Conditional with Polymorphism | Thay thế phép so sánh điều kiện bởi tính chất đa hình của phương thức |
27 | Replace Constructor with Factory Method | Thay thế hàm dựng bởi phương thức sản xuất |
28 | Replace Data Value with Object | Thay thế giá trị dữ liệu bằng đối tượng |
29 | Replace Inheritance/Delegation with Delegation/ Inheritance | Hoán chuyển qua lại giữa tính chất kế thừa và ủy quyền giữa hai lớp |
30 | Replace Magic Number with Symbolic Constant | Sử dụng biến hằng thay cho giá trị số tường minh |
31 | Replace Parameter with Method | Rút gọn tham số trong phương thức |
32 | Replace Record with Data Class | Thay thế kiểu dữ liệu bảng ghi bởi lớp dữ liệu |
33 | Replace Subclass with Fields | Biến đổi các phương thức ở các thuộc tính siêu lớp và rút gọn các lớp con |
34 | Replace Temp with Query | Chuyển đổi biểu thức thành phương thức. |
35 | Split Temporary Variable | Tạo mới các biến tạm riêng biệt tương ứng với từng đoạn mã |
36 | Self Encapsulate Field |
Tạo ra các phương thức dùng để truy xuất gián tiếp các thuộc tính. |
» Tin mới nhất:
» Các tin khác: