Clean code a handbook of agile software craftsmanship



tải về 0.5 Mb.
Chế độ xem pdf
trang19/20
Chuyển đổi dữ liệu02.02.2023
Kích0.5 Mb.
#54161
1   ...   12   13   14   15   16   17   18   19   20
I-II
12-KTXH-VUONG QUOC DUY(105-113)
Thêm ngữ cảnh thích hợp 
Chỉ có một vài cái tên có nghĩa trong mọi trường hợp – số còn lại thì không. Vậy nên, bạn cần 
đặt tên phù hợp với ngữ cảnh, bằng cách đặt chúng vào các lớp, các hàm hoặc các không gian tên 
(namespace). Khi mọi thứ thất bại, tiền tố nên được cân nhắc như là giải pháp cuối cùng. 
Hãy tưởng tượng bạn có các biến có tên là 
firstName

lastName

street

houseNumber

city

state
và 
zipcode
. Khi kết hợp với nhau, chúng rõ ràng tạo thành một địa 
chỉ. Nhưng nếu bạn chỉ thấy biến 
state
được sử dụng một mình trong một phương thức thì sao? Bạn 
có thể suy luận ra đó là một phần của địa chỉ không? 
Bạn có thể thêm ngữ cảnh bằng cách sử dụng tiền tố: 
addrFirstName

addrLastName

addrState
,… Ít nhất người đọc sẽ hiểu rằng những biến này là một phần của một cấu trúc lớn hơn. 
Tất nhiên, một giải pháp tốt hơn là tạo một lớp có tên là 
Address
. Khi đó, ngay cả trình biên dịch cũng 
biết rằng các biến đó thuộc về một khái niệm lớn hơn. 
Hãy xem xét các phương thức trong Listing 2-1. Các biến có cần một ngữ cảnh có ý nghĩa hơn 
không? Tên hàm chỉ cung cấp một phần của ngữ cảnh, thuật toán cung cấp phần còn lại. Khi bạn đọc 
qua hàm, bạn thấy rằng ba biến, 
number

verb
và 
pluralModifier
, là một phần của thông báo 
“giả định thống kê”. Thật không may, bối cảnh này phải suy ra mới có được. Khi bạn lần đầu xem xét 
phương thức, ý nghĩa của các biến là không rõ ràng. 
Listing 2-1 
Biến với bối cảnh không rõ ràng. 
private
void
printGuessStatistics(
char
candidate, 
int
count) { 
String
number; 
String
verb; 
String
pluralModifier; 
if
(count == 
0
) { 
number = 
"no"

verb = 
"are"

pluralModifier = 
"s"


else
if
(count == 
1
) { 
number = 
"1"

verb = 
"is"

pluralModifier = 
""


else

number = Integer.toString(count); 
verb = 
"are"

pluralModifier = 
"s"




26 
String
guessMessage = String.format(
"There %s %s %s%s"
, verb,
number, candidate, pluralModifier); 
print(guessMessage); 

Hàm này hơi dài và các biến được sử dụng xuyên suốt. Để tách hàm thành các phần nhỏ hơn, 
chúng ta cần tạo một lớp 
GuessStatisticsMessage
và tạo ra ba biến của lớp này. Điều này cung 
cấp một bối cảnh rõ ràng cho ba biến. Chúng là một phần của 
GuessStatisticsMessage
. Việc 
cải thiện bối cảnh cũng cho phép thuật toán được rõ ràng hơn bằng cách chia nhỏ nó thành nhiều chức 
năng nhỏ hơn. (Xem Listing 2-2.) 

tải về 0.5 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   12   13   14   15   16   17   18   19   20




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương