ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Phùng Ánh Dương BÁO CÁO BÀI TẬP TÁI CẤU TRÚC MÃ NGUỒN BÀI TẬP MÔN KIẾN TRÚC PHẦN MỀM Ngành: Khoa Học Máy Tính Hà Nội – 2022... ĐẠI HỌ
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Phùng Ánh Dương
BÁO CÁO BÀI TẬP TÁI CẤU TRÚC MÃ NGUỒN
BÀI TẬP MÔN KIẾN TRÚC PHẦN MỀM
Ngành: Khoa Học Máy Tính
Hà Nội – 2022
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Phùng Ánh Dương
BÁO CÁO BÀI TẬP TÁI CẤU TRÚC MÃ NGUỒN
BÀI TẬP MÔN KIẾN TRÚC PHẦN MỀM
Ngành: Khoa Học Máy Tính
Giảng viên: TS Võ Đình Hiếu
Hà Nội – 2022
Trang 3VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Phung Anh Duong
REFACTORING SOURCE CODE PRACTICE REPORT
Major: Computer Science
Lecturer: Dr Vo Dinh Hieu
Ha Noi - 2022
Trang 5Mục Lục
Chương 1: Source code ban đầu 6
1.1 Giới thiệu 6
1.2 plays.java 6
1.3 performances.java 7
1.4 invoice.java 7
1.5 main.java 8
Chương 2: Extract method 9
2.1 Giới thiệu 9
2.2 Trước tái cấu trúc 9
2.3 Sau tái cấu trúc 10
Chương 3: Chỉnh sửa trình bày 12
3.1 Xuống dòng các đoạn code dài, dễ gây rối 12
3.2 Cách dòng để tách đoạn code xử lý với các biến và kết quả trả về 12
3.3 Tối ưu hóa tính toán (giảm bớt số 0 trong tính toán để tránh sai sót) 13
Chương 4: Xóa bỏ những thứ không cần thiết 14
4.1 Xóa bỏ một số biến không cần thiết 14
Chương 5: Viết Javadoc 15
5.1 Giới thiệu 15
5.2 Trước khi sửa 15
5.3 Sau khi sửa 15
Trang 6Chương 1: Source code ban đầu
1.1 Giới thiệu
Source code ban đầu gồm 4 file:
• plays.java: class định nghĩa đối tượng plays, bao gồm các getter, setter
và constructor của đối tượng
• performances.java: class định nghĩa đối tượng performances, bao gồm các getter, setter và constructor của đối tượng
• invoice.java: class định nghĩa đối tượng invoice, bao gồm các getter, setter và constructor của đối tượng Ngoài ra còn chứa method bill() có chức năng in hóa đơn
• main.java: chứa method main() Bên trong method là data được cho sẵn
và một test
Link source code ban đầu: Github
Link source code sau khi tái cấu trúc: Github
1.2 plays.java
Trang 71.3 performances.java
1.4 invoice.java
Trang 81.5 main.java
Trang 9Chương 2: Extract method
2.1 Giới thiệu
Trong source code, method bill() có chứa phần code dùng để tính số tiền phải trả của một đối tượng performances Phần code này có thể được di chuyển thành một method mới, giúp method bill() thông thoáng, dễ đọc hơn
2.2 Trước tái cấu trúc
Trang 102.3 Sau tái cấu trúc
Trang 12Chương 3: Chỉnh sửa trình bày
3.1 Xuống dòng các đoạn code dài, dễ gây rối
3.2 Cách dòng để tách đoạn code xử lý với các biến và kết quả trả về
Trang 133.3 Tối ưu hóa tính toán (giảm bớt số 0 trong tính toán để tránh sai sót)
Trang 14
Chương 4: Xóa bỏ những thứ không cần thiết
4.1 Xóa bỏ một số biến không cần thiết
Trang 15Chương 5: Viết Javadoc
5.1 Giới thiệu
Javadoc là một công cụ khá tốt để giúp người khác có thể đọc hiểu code của bản thân Thay vì comment - chỉ có thể đưa ý tưởng vào từng phần code, thì javadoc có thể đưa
ý tưởng của người viết code về cả method, thậm chí cả class, cùng với các biến, các kết quả trả về
5.2 Trước khi sửa
5.3 Sau khi sửa