THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 105

Gi i pháp này đúng đ n, nh ng ch a hi u qu l m. B n có th nghĩ ra l i gi i nào không c n đ n tính

ư

ư

ả ắ

ế

l p hay không?

11.10 Các ph

ng th c đi n

ươ

Thay vì vi c t o nên đ i t

ng m i m i khi

ệ ạ

ố ượ

addTime đ

c kích ho t, ta có th yêu c u ch

ng trình g i

ượ

ươ

hãy cung c p m t đ i t

ng n i mà

ộ ố ượ

ơ

addTime l u k t qu . Hãy so sánh đo n mã sau v i phiên b n tr

c:

ư

ế

ướ

public static void

addTimeFill(Time t1, Time t2, Time sum) {

sum.hour = t1.hour + t2.hour;

sum.minute = t1.minute + t2.minute;

sum.second = t1.second + t2.second;

if

(sum.second >= 60.0) {

sum.second -= 60.0;

sum.minute += 1;

}

if

(sum.minute >= 60) {

sum.minute -= 60;

sum.hour += 1;

}

}

K t qu đ

c l u trong

ế

ả ượ ư

sum, nên ki u tr v là

ả ề void.

Các ph

ng th c s a đ i và ph

ng th c đi n đ u hi u qu vì chúng không ph i t o nên đ i t

ng m i.

ươ

ứ ử

ươ

ả ạ

ố ượ

Nh ng chúng l i gây khó khăn trong vi c cô l p các ph n khác nhau c a ch

ng trình; trong nh ng d

ư

ươ

án l n chúng có th gây nên l i r t khó tìm ra.

ỗ ấ

Các hàm thu n túy giúp ta qu n lý tính ch t ph c t p c a nh ng d án l n, ph n là nh ngăn không cho

ứ ạ ủ

nh ng lo i l i nh t đ nh không th x y ra. H n n a, hàm thu n túy còn thích h p v i nh ng ki u l p

ạ ỗ

ấ ị

ể ả

ơ

ể ậ

trình ghép và l ng. Và vì k t qu c a hàm thu n túy ch ph thu c vào tham s , ta có th tăng t c cho

ế

ả ủ

nó b ng cách l u gi nh ng giá tr đã tính toán t tr

c.

ư

ừ ướ

Tôi g i ý r ng b n nên vi t hàm thu n túy m i lúc th y đ

c, và ch dùng đ n ph

ng th c s a đ i khi

ế

ượ

ế

ươ

ứ ử

th y rõ u đi m v

t tr i.

ư

ượ

11.11 L p k ho ch và phát tri n tăng d n

ế

Trong ch

ng trình này tôi gi i thi u m t quá trình phát tri n ch

ng trình v i tên g i

ươ

ươ

l p nguyên

m u nhanh

1

. V i t ng ph

ng th c, tôi vi t m t b n s th o đ th c hi n tính toán c b n, r i ki m

ớ ừ

ươ

ế

ộ ả ơ ả

ể ự

ơ ả

tra nó v i m t vài tr

ng h p, s a nh ng l i b t g p đ

c.

ườ

ỗ ắ ặ

ượ

Cách ti p c n này có th hi u qu , song nó có th d n đ n mã l nh ph c t p m t cách không c n thi t—

ế ậ

ể ệ

ể ẫ

ế

ứ ạ

ế

vì nó x lý quá nhi u tr

ng h p đ c bi t—và cũng kém tin c y—vì th t khó t thuy t ph c r ng b n đã

ườ

ế

ụ ằ

tìm th y

t t c

ấ ả nh ng l i trong ch ng trình.

ươ

M t cách khác là xem xét kĩ h n v n đ nh m tìm m u ch t có th giúp vi c l p trình d dàng h n.

ơ

ệ ậ

ơ

Trong tr

ng h p này đi m m u ch t bên trong là:

ườ

Time th c ra là m t s có ba ch s trong h c s

ộ ố

ữ ố

ệ ơ ố