Article:
Thứ tự biểu thức logic
1585
phananhvu.myopenid.com 125Updated 7 months ago |
Sẽ là không tốt khi ta coi thường ai đó hay một cái gì đó. Đặc biệt, sẽ rất tệ khi developer coi thường thứ tự các biểu thức logic. Nếu anh nghĩ rằng ((a>b) && (a<c)) với ((a<c) && (a>b)) chả khác gì nhau thì ...
WATCH OUT!

Pòm. Ôi cái chân của ... anh.
Xem đoạn mã sau:
var a:Array = new Array(SIZE);
var i:int = someValue;
while ((a[i] == someThing) &&(i<SIZE)) {
// Do something.
}
Nhìn thì biểu thức logic của while có vẻ như không có vấn đề gì nhưng nếu vì một lí do nào đó, someValue có giá trị lơn hơn size SIZE thì sao nhỉ. Trình dịch sẽ không xác định được phần tử a[someValue] đó và crashhh. Đặc biệt, đây lại là một lỗi runtime nên rất khó phát hiện.
Khắc phục? Chỉ cần đảo thứ tự trong biểu thức logic của while như sau:
var a:Array = new Array(SIZE);
var i:int = someValue;
while ((i<SIZE) &&(a[i] == someThing)) {
// Do something.
}
OK, that's it.
as, actionscript, best practice, logic expression
125
over 2 years ago
over 2 years ago
over 2 years ago
over 2 years ago
over 2 years ago
over 2 years ago
7 months ago