Cải tiến mã nguồn
Giới thiệu[sửa]
Loạt bài này đề cập các vấn đề liên quan đến cải tiến mã nguồn (refactoring) dành cho người Việt. Mục đích là giúp đỡ các bạn sinh viên và tất cả những ai quan tâm đến cải tiến mã nguồn nói chung có thể dễ dàng tiếp cận tri thức về lĩnh vực này bằng ngôn ngữ mẹ đẻ.
Cải tiến mã nguồn[sửa]
Cải tiến mã nguồn (refactoring) là quá trình thay đổi một hệ thống phần mềm nhằm cải tiến cấu trúc bên trong nhưng không làm biến đổi hành vi bên ngoài của nó. Refactoring là việc dọn dẹp mã nguồn một cách có tổ chức sao cho tối thiểu hoá khả năng gây ra lỗi. Về bản chất refactoring là nâng cấp thiết kế của mã nguồn sau khi nó đã được viết ra.
Cách đọc[sửa]
Bạn có thể bắt đầu với các khái niệm cơ bản về cải tiến mã nguồn:
- Định nghĩa cải tiến mã nguồn
- Hai chiếc mũ
- Tại sao cần refactor?
- Khi nào nên refactor?
- Các vấn đề khi refactor
- Refactoring với thiết kế
- Refactoring với hiệu năng
Sau đó hãy tìm hiểu các khía cạnh khác của cải tiến mã nguồn, để có một cái nhìn tổng quát bạn có thể xem Thể loại:Cải tiến mã nguồn.
Hãy góp một tay![sửa]
Cải tiến mã nguồn là một chủ đề tương đối rộng và loạt bài này mới chỉ đề cập một phần nhỏ. Các chủ đề đang chờ được viết bao gồm (và còn nhiều nữa):
-
"Mùi
hôi"
trong
mã
nguồn
- Mã nguồn trùng lặp
- Phương thức dài
- Lớp lớn
- Danh sách tham số dài
- Thay đổi bất đồng
- Shotgun surgery
- Feature envy
- Data clumps
- Ám ảnh dữ liệu nguyên thuỷ
- Câu lệnh switch
- Phân cấp thừa kế song song
- Lớp lười biếng
- Sự tổng quát để dành
- Trường tạm
- Chuỗi thông điệp
- Kẻ trung gian
- Thân mật không đúng cách
- Lớp thay thế với giao diện khác nhau
- Lớp thư viện không đầy đủ
- Lớp dữ liệu
- Của thừa kế bị từ chối
- Chú thích
-
Các
phương
pháp
cải
tiến
mã
nguồn
- Soạn thảo phương thức
- Di chuyển tính năng giữa các đối tượng
-
Tổ
chức
dữ
liệu
- Đóng gói trường nội bộ
- Thay giá trị bằng đối tượng
- Đổi giá trị thành tham chiếu
- Đổi tham chiếu thành giá trị
- Thay mảng bằng đối tượng
- Nhân bản dữ liệu
- Đổi liên kết một chiều thành liên kết hai chiều
- Đổi liên kết hai chiều thành liên kết một chiều
- Thay giá trị đặc biệt bằng hằng đặt tên
- Đóng gói trường
- Đóng gói tập hợp
- Thay thế bản ghi bằng lớp dữ liệu
- Thay thế mã kiểu bằng lớp
- Thay thế mã kiểu bằng lớp con
- Thay thế mã kiểu bằng trạng thái, chiến lược
- Thay thế lớp con bằng trường
- Đơn giản hoá biểu thức điều kiện
-
Khiến
lời
gọi
hàm
đơn
giản
hơn
- Đổi tên phương thức
- Thêm tham số
- Xoá tham số
- Tách truy vấn khỏi thay đổi
- Tham số hoá phương thức
- Thay tham số bằng phương thức tường minh
- Giữ đối tượng nguyên vẹn
- Thay tham số bằng phương thức
- Tạo đối tượng tham số
- Xoá phương thức thiết lập
- Giấu phương thức
- Thay hàm tạo bằng factory method
- Đóng gói sự ép kiểu xuống
- Thay mã lỗi bằng ngoại lệ
- Thay ngoại lệ bằng kiểm tra
- Xử lý tổng quát hoá
- Refactoring lớn
-
Các
công
cụ
refactoring
-
Refactoring
trong
Java
-
Refactoring
trong
Eclipse
- Rename (Đổi tên)
- Move (Di chuyển)
- Change method signature (Đổi chữ kí của phương thức)
- Extract Method (Trích phương thức)
- Extract Local Variable (Trích biến cục bộ)
- Extract Constant (Trích hằng)
- Inline method (Nhập phương thức)
- Inline variable (Nhập biến)
- Convert Anonymous Class to Nested (Chuyển lớp vô danh sang lớp lồng)
- Move Type to New File (Di chuyển kiểu sang tệp mới)
- Convert Local Variable to Field (Chuyển biến nội bộ thành trường)
- Extract Superclass (Trích lớp cha)
- Extract Interface (Trích giao diện)
- Use Supertype Where Possible (Sử dụng kiểu tổng quát khi có thể)
- Push Down (Đẩy xuống)
- Pull Up (Kéo lên)
- Extract Class (Trích lớp)
- Introduce Parameter Object (Tạo đối tượng tham số)
- Introduce Indirection
- Introduce Factory
- Introduce Parameter (Tạo tham số)
- Encapsulate Field (Đóng gói trường)
- Generalize Declared Type (Tổng quát hoá)
- Infer Generic Type Arguments
- Refactoring trong Netbeans
-
Refactoring
trong
Eclipse
-
Refactoring
trong
Java
Liên kết đến đây
- Định nghĩa cải tiến mã nguồn
- Khi nào nên refactor?
- Các vấn đề khi refactor
- Tại sao cần refactor?
- Refactoring với thiết kế
- Refactoring với hiệu năng
- Hai chiếc mũ
- "Mùi hôi" trong mã nguồn
- Mã nguồn trùng lặp
- Phương thức dài
- Xem thêm liên kết đến trang này.