8/15/2011

VB.Net ศิลปะการใช้ If (Art of If Statement)

1. แบบมี End If (หรือแบบหลายบรรทัด)
1.1) If ... End If
รูปแบบนี้ เราจะตรวจสอบและเขียนคำสั่ง กรณีผลลัพธ์ของเงื่อนไขเป็น True เท่านั้น เช่น

'กรณีผลลัพธ์ของเงื่อนไขเป็น False คำสั่งถัดไปจะเป็น End If ทันที
If ValueA > 2 Then
ValueA -= 1
ValueB = 3
End If

1.2) If ... Else ... End If
รูปแบบนี้ เราจะตรวจสอบและเขียนคำสั่ง ที่ผลลัพธ์ของเงื่อนไขเป็นทั้ง True และ False เช่น

If ValueA <> 3 Then
ValueB += 1
Else
ValueB -= 1
End If

1.3) If ... ElseIf ... Else ... End If
รูป แบบนี้จะให้เราใส่เงื่อนไขเข้าไปหลายๆ ตัวได้ คล้ายๆ Select Case ส่วน Else จะใสหรือไม่ก็ได้ แต่ถ้าไม่ใส่จะเป็นการเขียนโปรแกรมที่ไม่ดี เพราะกรณีเงื่อนไขใดๆ ไม่มีผลลัพธ์เป็น True เลย ก็อาจจะเกิดปัญหา logic error หรือ flow ไม่เป็นไปตามต้องการก็ได้ จึงควรเขียนดักไว้ก่อน เพื่อให้ถูกหลักการเขียนโปรแกรมที่ดี (อาจมีเหตุการณ์แปลกๆ ที่ทำให้มี input data แปลกๆ เข้ามาในโปรแกรมเรา กันไว้ดีกว่าแก้ครับ) ตัวอย่างการใช้

If MyCountry = "Thailand" Then
MyCountry = "ประเทศไทย"
ElseIf MyName = "Japan" Then
MyCountry = "ประเทศญี่ปุ่น"
ElseIf MyName = "China" Then
MyCountry = "ประเทศจีน"
Else
MyCountry = "บุคคลไร้สัญชาติ"
End If

2. แบบไม่มี End If (หรือแบบบรรทัดเดียว)
2.1) If ... Then ...
เป็น รูปแบบที่สั้นที่สุด และหวังผลให้ทำงานเฉพาะผลลัพธ์ของเงื่อนไขที่เป็น True เท่านั้น แต่คำสั่งหลัง Then มีได้แค่ 1 statement เท่านั้น ตัวอย่างเช่น

If Number = 10 Then MsgBox("Value is " & Number)

2.2) If ... Then ... Else ...
รูป แบบ If บรรทัดเดียว ที่ทำงานกับผลลัพธ์ชองเงื่อนไข ทั้ง True และ False แต่คำสั่งหลัง Then และ Else ก็ยังต้องมีเพียง 1 statement เท่านั้น เช่น

If Score <= 49 Then Grade = "S" Else Grade = "P"

2.3) If ... Then ... : ... : ...
รูป แบบ If บรรทัดเดียว ที่ทำงานกับผลลัพธ์ชองเงื่อนไขที่เป็น True แต่สามารถเขียนหลายๆ statement หลัง Then ได้ โดยมีเครื่องหมานโคล่อน (:) ระหว่าง statement

If Sex = True Then SexString = "Man" : MsgBox("Sex is " & SexString)

2.4) If ... Then ... : ... : ... Else ... : ... : ...
รูป แบบที่เหมือนข้อ 2.3 แต่ทำงานกับผลลัพธ์ชองเงื่อนไข ทั้ง True และ False และเขียนหลายๆ statement หลังตรวจสอบการเงื่อนไข ได้เหมือนกัน

If Value > 3 Then X *= 2 : Y *= 3 Else X *= 3 : Y *=2 : Z *= 2

3. แบบ IIf (อ่านว่า If and only If)
รูป แบบนี้จะมีการ return ค่าหลังจากตรวจสอบเงื่อนไข ซึ่งเขียนได้ในบรรทัดเดียวด้วย รูปแบบเป็นดังนี้ IIF(เงื่อนไข, ค่าเมื่อเงื่อนไขเป็นจริง, ค่าเมื่อเงื่อนไขเป็นเท็จ) ตัวอย่างเช่น

'คำสั่ง IIf จะทำงานเหมือน call function
Price = IIf(IsMember, Price - (Price * 0.1), Price - (Price * 0.05))

เทคนิคเพิ่มเติม
เพื่อ ให้การเขียนแต่ละบรรทัดไม่ยาวเกินไป เราอาจจะใช้เครื่องหมาย underscore (_) เพื่อขึ้นบรรทัดใหม่ แต่ compiler จะตีความเป็นเหมือนบรรทัดเดียว ทำให้โค้ดมีระเบียบและมีประสิทธิภาพดี เช่น

'โค้ดข้างล่างนี้ มีรูปแบบเหมือนข้อ 2.1
If (CustomerItem => 3) Or (CustomerTotal > 2000) _
Or (CustomerBirthday = Now) Or (IsMember) Then _
Price -= Price * 0.1

No comments:

Post a Comment