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

nghĩ r ng nó không nh h

ng gì đ n ch

ng trình, và lúc có nh h

ng thì đó s là bài h c cho b n.

ưở

ế

ươ

ưở

D.3 L i logic

CH

NG TRÌNH TÔI VI T RA KHÔNG HO T Đ NG ĐÚNG.

ƯƠ

L i logic r t khó tìm, vì trình biên d ch và h th ng lúc th c thi không cung c p thông tin gì v s tr c

ệ ố

ề ự ụ

tr c. Ch có b n m i bi t r ng ch

ng trinh c n ph i th c hi n đi u gì.

ế ằ

ươ

B

c đ u tiên là t o l p m t k t n i gi a n i dung ch

ng trình và bi u hi n mà b n quan sát đ

c.

ướ ầ

ạ ậ

ộ ế ố

ươ

ượ

B n c n gi thi t v đi u th t s mà ch

ng trình đang th c hi n.

ạ ầ

ế ề ề

ậ ự

ươ

ệ B n c n t h i mình nh ng đi u sau:

ạ ầ ự ỏ

Có đi u gì mà ch

ng trình c n ph i làm nh ng d

ng nh nó không làm hay không? Hãy tìm ra đo n

ươ

ư

ườ

ư

mã l nh th c hi n tính năng đó và ch c r ng nó đ

c th c thi khi b n nghĩ r ng l ra nó ph i ch y.

ắ ằ

ượ

Có đi u gì đang di n ra mà l ra không nên có nó? Hãy tìm đo n mã trong ch

ng trình mà th c hi n

ươ

tính năng đó r i xem li u nó có đ

c th c khi trong khi đáng l thì không.

ượ

Có đo n mã nào t o ra m t hi u ng mà không nh b n mong đ i không? Hãy ch c r ng b n hi u đ

c

ệ ứ

ư ạ

ắ ằ

ượ

đo n mã nghi v n, đ c bi t khi nó liên quan đ n vi c kích ho t ph

ng th c Java. Hãy đ c tài li u v

ế

ươ

nh ng ph

ng th c, r i th b ng nh ng tr

ng h p ki m tra đ n gi n. Có khi chúng l i không làm vi c

ươ

ử ằ

ườ

ơ

mà b n nghĩ r ng chúng s làm.

Đ l p trình, b n ph i có m t mô hình t

ng t

ng v cách th c ho t đ ng c a ch

ng trình. N u b n

ể ậ

ưở

ượ

ạ ộ

ươ

ế

vi t m t ch

ng trình mà không th c hi n đúng vi c b n mong đ i, thì th

ng là v n đ không n m

ế

ươ

ệ ạ

ườ

ằ ở

ch

ng trình; nó n m mô hình t

ng t

ng c a b n.

ươ

ằ ở

ưở

ượ

Cách t t nh t đ s a mô hình t

ng t

ng cho đúng là chia ch

ng trình thành nh ng b ph n (th

ng

ấ ể ử

ưở

ượ

ươ

ườ

là các l p và ph

ng th c) r i ki m tra ch y th t ng b ph n m t cách đ c l p. M t khi b n th y s

ươ

ử ừ

ộ ậ

ấ ự

khác bi t gi a mô hình và th c t , b n s có th gi i quy t v n đ .

ự ế ạ ẽ

ể ả

ế ấ

Sau đây là m t s l i logic thông th

ng c n ph i ki m tra:

ộ ố ỗ

ườ

Luôn nh r ng phép chia nguyên làm tròn xu ng. N u b n mu n c ph n th p phân, hãy dùng

ớ ằ

ế

s

ố double.

S ph y đ ng ch là g n đúng, nên b n đ ng l thu c vào đ chính xác tuy t đ i.

ệ ố

Nói chung, hãy dùng s nguyên cho nh ng th đ m đ

c và dùng s ph y đ ng cho th đo đ

c.

ứ ế

ượ

ượ

N u b n dùng toán t gán (

ế

=) thay vì toán t b ng (

ử ằ

==) trong đi u ki n c a m t l nh

ệ ủ

ộ ệ if, while, ho c

ặ for,

b n có th s nh n m t bi u th c v m t cú pháp thì đúng nh ng v ng nghĩa thì sai.

ể ẽ

ứ ề ặ

ư

Khi b n áp d ng toán t b ng (

ử ằ

==) v i đ i t

ng, nó s ki m tra identity. N u b n có ý mu n ki m tra

ớ ố ượ

ẽ ể

ế

đ t

ng đ

ng, hãy dùng ph

ng th c

ộ ươ

ươ

ươ

ứ equals.

Đ i v i các ki u d li u do ng

i dùng đ nh nghĩa,

ố ớ

ữ ệ

ườ

equals s ki m tra identity. N u b n mu n m t kí

ẽ ể

ế

hi u khác cho t

ng đ ng, b n ph i ghi đè lên nó.

ươ

K th a có th d n đ n nh ng l i logic r t chi li, b i b n có th ch y mã l nh đ

c k th a mà không

ế ừ

ể ẫ

ế

ở ạ

ể ạ

ượ ế ừ

nh n ra nó. Hãy xem m c “Lu ng th c thi” trên.

TÔI CÓ M T BI U TH C L N VÀ GAI GÓC MÀ CH NG HO T Đ NG THEO S MONG Đ I.

Vi c vi t nh ng bi u th c ph c t p cũng t t mi n là chúng d đ c, nh ng chúng có th làm vi c g l i

ế

ứ ạ

ễ ọ

ư

ệ ỡ ỗ

g p khó khăn. Thông th

ng nên ch nh m t bi u th c thành m t lo t các l nh gán cho nh ng bi n

ườ

ỏ ộ

ế

t m th i.