2009-03-29 38 views
13

Tôi đang tìm kiếm lý do để sử dụng/không sử dụng và cho ý tưởng ban đầu (trong sử dụng của họ và để thay thế chúng). Toán tử bậc ba: thực hành tốt hay xấu?


trùng lặp:

liên quan (nhưng không đề cập đến câu hỏi được đặt):

+1

điều tiếp theo là gì? tính hữu dụng của câu lệnh if? – SilentGhost

+0

Nó không giống nhau. –

+0

Chắc chắn nó là, chỉ cần thay thế Ternary với bất cứ điều gì. – Samuel

Trả lời

4

Đó là một cái gì đó giống như for vòng lặp. Làm cho tinh thần cho những gì nó được thực hiện cho nhưng khi bạn cố gắng để dính nhiều thứ trong nó, nó trở nên không thể đọc được.

0

Bạn đang nói đến nhà điều hành bậc ba nào?

Toán tử bậc ba là bất kỳ toán tử nào có ba đối số.

Nếu bạn đang nói về? : toán tử, điều này được gọi là toán tử điều kiện. Tôi không thể sống mà không có nó nữa, cá nhân. Các câu lệnh if-else trông rất lộn xộn với tôi, đặc biệt là khi thực hiện một bài tập có điều kiện. Một số phàn nàn rằng nó trông lộn xộn, nhưng nó vẫn còn có thể (đặc biệt là nếu sử dụng Visual Studio hoặc một IDE định dạng thông minh) để làm cho mọi thứ dễ dàng đọc được, và bạn nên bình luận tất cả các điều kiện của bạn anyway.

+3

Nó thường được gọi là toán tử bậc ba vì nó là toán tử duy nhất có ba đối số. – Samuel

+0

Tôi đang nói về? : toán tử (Tôi luôn gọi nó là toán tử bậc ba: tôi có sai không?) –

+2

+1 cho độ chính xác. Có, nó được gọi là toán tử có điều kiện. Nó xảy ra là toán tử * a * ternary, nhưng nó chỉ mô tả số toán hạng, chứ không phải mục đích/hành vi của nó. Nếu nhóm C# giới thiệu một toán tử bậc ba khác, mọi người thực sự sẽ phải học đúng tên ... –

3

Toán tử bậc ba có điều kiện chắc chắn có thể bị lạm dụng, và một số tìm thấy nó khá khó đọc. Tuy nhiên, tôi thấy rằng nó có thể rất sạch trong hầu hết các tình huống mà một biểu thức boolean được mong đợi, với điều kiện là ý định của nó là rõ ràng. Nếu mục đích là không phải là rõ ràng, tốt nhất nên sử dụng biến tạm thời với tên rõ ràng có giá trị được gán bằng câu lệnh if hoặc sử dụng hàm có tên tốt trả về giá trị mong đợi.

8

Tốt cho thẻ ngắn bằng các ngôn ngữ khuôn mẫu như PHP, ví dụ:

<form> 
<input type='radio' name='gender' value='m' <?=($gender=='m')?"checked":""?>>Male 
<input type='radio' name='gender' value='f' <?=($gender=='f')?"checked":""?>>Female 
</form> 

Tốt cho công tắc trong javascript/jQuery:

var el = $("#something"); 
$(el).is(':visible') ? $(el).hide("normal") : $(el).fadeIn("normal"); 

Tốt cho chuyển nhượng, đặc biệt là nơi một tên biến đặc biệt có thể mất các loại khác nhau:

$var = ($foo->isFoo()) ? 'Success!' : false; 
23

Vì mục đích dễ đọc, tôi chỉ sử dụng một bộ ba nếu nó phù hợp với một dòng 80-char.

Các vấn đề liên quan