2009-01-07 7 views
6

tôi thấy tuyên bố này là một số mã cũ và nó đã cho tôi một giây để tìm ra ...Thiết lập một giá trị boolean dựa trên một số nguyên

IsTestActive = (TestStateID == 1 ? true : false); 

Xin vui lòng sửa cho tôi nếu tôi sai, nhưng không phải là cái này giống như cái này ?:

IsTestActive = (TestStateID == 1); 

Nếu có, tại sao bạn lại muốn sử dụng cái đầu tiên? Cái nào dễ đọc hơn? (Tôi nghĩ rằng sau này, nhưng tôi muốn xem những gì người khác nghĩ.)

Trả lời

32

Vâng, nó là chính xác như nhau.

Có, sau này dễ đọc hơn.

+2

Tôi đã chỉ nhìn thấy cựu được sử dụng bởi 2 loại người: những người thiếu hiểu biết cơ bản về logic boolean, hoặc những người nghĩ rằng toán tử bậc ba thực sự rất tuyệt. –

+1

Trước đây về mặt lý thuyết, bạn có thể đạt được hiệu suất tối thiểu, mặc dù nếu bạn quan tâm đến mức hiệu suất đó thì tôi nghi ngờ bạn có vấn đề lớn hơn ... –

1

Không, không có lý do thực tiễn cho việc sử dụng các phiên bản đầu tiên, thế giới không phải là hoàn hảo, and neither are programmers.

5
IsTestActive = (TestStateID == 1); 

chắc chắn là dễ đọc hơn.

Bạn thể làm cho một trường hợp để xác định một hằng số

ACTIVE = 1 

sau đó thay thế boolean biến IsTestActive với

(TestStateID == ACTIVE) 

Cách mã hiện nay, tình trạng của boolean IsTestActive sẽ có thể sai nếu trạng thái của TestStateID thay đổi mà không cập nhật boolean. Bỏ qua các boolean và kiểm tra nguồn thực sự của thông tin bạn đang theo sau sẽ loại bỏ khả năng lỗi này.

+1

điểm tốt, tôi ghét số nguyên ma thuật - nhưng tôi cho rằng OP chỉ là ví dụ đăng mã số – annakata

+0

Điều đó có thể xảy ra, nhưng tôi thấy rất nhiều người sử dụng các biến tạm thời như thế này trong mã sản xuất. –

0

Khả năng đọc phụ thuộc vào nơi bạn sử dụng cấu trúc này. Tôi thường tìm thấy một cái gì đó như

(TestStateID == 1 ? true : false) 

dễ đọc hơn.

0

Vâng, tôi không biết về các ngôn ngữ khác, nhưng trong PHP nó thậm chí còn dễ dàng hơn, sử dụng loại đúc:

$IsTestActive = (boolean)$TestStateId;