1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÁO cáo bài tập tái cấu TRÚC mã NGUỒN chương 1 source code ban đầu

15 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

ĐẠI HỌC QUOC GIA HA NOI TRUONG DAI HOC CONG NGHE

Phing Anh Duong

BAO CAO BAI TAP TAI CAU TRUC MA NGUON

Trang 2

ĐẠI HỌC QUOC GIA HA NOI TRUONG DAI HOC CONG NGHE

Phing Anh Duong

BAO CAO BAI TAP TAI CAU TRUC MA NGUON

Trang 3

VIETNAM 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 5

Chương 1: Source code ban đầu - - LG 2C 1 11212121111 11 12 H1 HH TH HH 6

Ilhnc ha .e 6

I9 1ì " -ciiiiiỔ 6

I° ‹-0 9200 000 Si 7 F0 2-1: ẦẦồồốồốồố 43 7

V5 MAIN JAVA ốằ TnaaỄEEễ'E3‡ 8

Chương 2: Extract method - Q01 HT HE Ki ki nh 9

rhấc o0: aAa.a 9

2.2 Trước tái cấu †FÚC - - (2c +21 1E 121 21111 11 112111 11 1T TH TH TH TH TH TH Tnhh 9 2.3 Sau tái cấu †FÚC - LG 2c SH S1 S1 S122 21111 H1 1H H1 HT TH TH TH TT HH TH TH Hhg 10

Chương 3: Chỉnh sửa trình bày -QQQ Q00 HH HH HH rà 12

3.1 Xuống dòng các đoạn code dài, dễ gây rối - 5c 2c Scccseceeerre2 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 . - 2S St Se re reeerree 14 4.1 Xóa bỏ một số biến không cần thiết . - 2C SH re 14 Chương 5: Viết Javadoc - - - L L1 T12 nh TH TH TH TH TH TH TH TH TH TH TH HH TH TH 15

"híc o0 ae 15

Trang 6

Chương 1: Source code ban đầu

1.1 Giới thiệu

Source code ban dau gém 4 file:

e plays.java: class dinh nghia d6i trong plays, bao g6m c4c getter, setter và constructor của đối tượng

e©_ performances.java: class định nghĩa đối tượng performances, bao gồm các getfer, seffer và constructor của đối tượng

e invoice.java: class định nghĩa đối tượng invoice, bao gôm các getfer, setter và constructor của đối tượng Ngoài ra còn chứa method billQ có chức năng 1n hóa đơn

e©_ 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

public class plays {

Lị private String private String

public String getPlayID() "eturn

public void (String playID) th1s

public String getType() "eturn public void (String type)

public

public plays(String name, String type) {

Trang 7

1.3 performances.java

performances { plays pLlayID

playID) 2LayID = playID

audience) lience audience

(plays pLayTD audience) { playID = playID = audience eo eo e 1.4 invoice.java invoice { String customer performances[] performances String @ (String customer) customer = customer performances[ ] lộ performances

(performances[] performances) performances = performances

(String customer, performances[] performances) { = customer eS = performances String (invoice invoice, plays play) { totalAmount = 0 volumeCredit = 0

StringBuilder result = StringBuilder ( + invoice.getCustomer() +

Trang 8

thisAmount = 30000 (perf.getAudience() > 20) { thisAmount += 10000 + 500 * (perf.getAudience() - 20) i thisAmount += 300 * perf.getAudience() Error( + pl.getType()) volumeCredit = Math.max(perf.getAudience() - 30, 86) ( equaLs(pL.getType())) { volumeCredit += Math.floor(perf.getAudience() / 5) resuLlt.append(play.getPlayID()).append( ).append(thisAmount / 100).append( append(perf getAudience()).append( ) totaLAmount += thisAmount }

result append( ).append(totalAmount / 100).append(

result append( ).append(volumeCredit) append( result toString() 1.5 main.java main { (String[] args) { plays[] plays = ptLays[5 ] om pLays( 1] plays ( 2 ! LE WET [ ptLays[ plays[ | plays performances[] performances = performances[3] performances[Q@] performances(pLlays[0@] performances[ 1] performances(ptays[1] performances[ 2 ] performances(ptays[2 ]

invoice invoice invoice( performances)

Trang 9

Chuong 2: Extract method

2.1 Giới thiệu

Trong source code, method billQ 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 billQ thơng thống, dễ đọc hơn

2.2 Trước tái cấu trúc

result.a

Trang 10

2.3 Sau tái cầu trúc

pubLic String biLLs(invoice invoice) {

int totaLAmount = 0;

int volumeCredit = 0;

StringBuilder result = new StringBuilder ( + invoice.getCusto

for (performances perf : invoice.getPerfor

plays play = perf.getPLayTD(); t int thisAmount = 09; thisAmount = caLcPerf(perf); totalAmount += thisAmount; volumeCredit += calcVolumeCredit(perf) ; resuLt.append(pLlay.getPlayID()).append( ).append(thisAmount .append(perf getAudience()).appendí( \n"); 3 "esuLt.append( ).append(totaLAmount "esuLt.append ( ) append(volumeCredit).append

return result toString(); Là

Trang 12

Chươ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

"esuLt.append(ptay getPLayTID()) append ( ).append(thisAmount / 100).append( append(perf getAudience()).append( )

}

Trang 13

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)

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

Ngày đăng: 24/12/2023, 14:51

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w