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
ẫ
. 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
ự
ộ ố
ữ ố
ệ ơ ố