แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่งเงื่อนไขในภาษาไพธอน
บทความนี้อธิบายแนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่งเงื่อนไขในไพธอน
YouTube Video
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่งเงื่อนไขในภาษาไพธอน
คำสั่ง if ในไพธอนเป็นโครงสร้างพื้นฐานสำหรับการทำการแตกกิ่งตามเงื่อนไข และส่งผลอย่างมากต่อการอ่านและการบำรุงรักษาโค้ด ที่นี่เราจะพูดถึงรายละเอียดของแนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่ง if
ใช้การแสดงเงื่อนไขที่ชัดเจน
เขียนนิพจน์เงื่อนไขให้กระชับและชัดเจน โดยหลีกเลี่ยงการเขียนซ้ำซ้อน
1condition = True
2
3### Bad Example
4if condition == True:
5 pass
6
7### Good Example
8if condition:
9 pass- ในไพธอน คุณสามารถแสดงเงื่อนไขที่เป็นจริงได้โดยเขียนว่า
if condition:
การรวมเงื่อนไขหลายอย่างเข้าด้วยกัน
เมื่อรวมเงื่อนไขหลายอย่างเข้าด้วยกัน ให้ใช้ and หรือ or อย่างไรก็ตาม เมื่อการแสดงเงื่อนไขซับซ้อนมากขึ้น การอ่านอาจยากขึ้น ดังนั้นให้พิจารณาการปรับดังต่อไปนี้:
1age = 15
2is_student = True
3
4### Bad Example
5# Complex condition
6if (age > 18 and age < 65) or (is_student and age > 15):
7 pass
8
9### Good Example
10# Improving readability
11is_working_age = 18 < age < 65
12is_eligible_student = is_student and age > 15
13
14if is_working_age or is_eligible_student:
15 pass- โดยการแยกเงื่อนไขและกำหนดค่าเหล่านั้นให้ตัวแปร การอ่านสามารถดีขึ้นได้
การประเมินค่าแบบ short-circuit ของ and / or
ในนิพจน์เงื่อนไขที่ใช้ and หรือ or หากผลลัพธ์สามารถตัดสินใจได้จากค่าฝั่งซ้ายเพียงอย่างเดียว จะเกิดการประเมินค่าแบบ short-circuit และฝั่งขวาจะไม่ถูกประเมิน การเข้าใจเรื่องนี้ช่วยให้คุณหลีกเลี่ยงการประมวลผลที่ไม่จำเป็นและป้องกันข้อผิดพลาดได้
1user = None
2def expensive_check():
3 return True
4
5# Example of short-circuiting with 'and'
6if user and user.is_active:
7 # If user is None, user.is_active will NOT be evaluated
8 print("Active user found.")
9
10# Example of short-circuiting with 'or'
11if user.is_admin or expensive_check(user):
12 # If user.is_admin is True, expensive_check will NOT be called.
13 print("Access granted.")
14else:
15 print("Access denied.")- ด้วยการใช้การประเมินค่าแบบ short-circuit คุณสามารถเพิ่มประสิทธิภาพและความปลอดภัยในการประมวลผล
ลำดับความสำคัญของ and และ or
and มีลำดับความสำคัญสูงกว่า or ดังนั้น เมื่อรวมเงื่อนไขต่าง ๆ โดยไม่ระวัง คุณอาจได้ผลลัพธ์ที่ไม่คาดคิด การใช้วงเล็บเพื่อให้เจตนาในการเขียนโค้ดชัดเจนถือว่าเป็นสิ่งสำคัญ
1age = 15
2is_student = True
3
4### Unclear example
5# This is interpreted as: age > 18 and (age < 65 or is_student)
6if age > 18 and age < 65 or is_student:
7 pass
8
9### Clear example
10# Explicit parentheses make the intended logic obvious
11if (age > 18 and age < 65) or is_student:
12 pass- การใช้วงเล็บจะช่วยให้คุณกำหนดลำดับความสำคัญของ
andและorได้ชัดเจน ลดความเสี่ยงของบั๊กที่ไม่คาดคิด
เข้าใจค่า Truthy และ Falsy
ในไพธอน ค่าเหล่านี้จะถูกประเมินเป็น False:
ไม่มีเท็จ- ตัวเลข
0(รวมถึง0.0) - ประเภทลำดับที่ว่างเปล่า (เช่น list ที่ว่างเปล่า, tuple ที่ว่างเปล่า หรือ string ที่ว่างเปล่า)
- ตัวอย่าง:
[],(),""
- ตัวอย่าง:
- ดิกชันนารีว่างเปล่า
- ตัวอย่าง:
{}
- ตัวอย่าง:
การใช้ประโยชน์จากจุดนี้สามารถช่วยให้ง่ายขึ้นในการเขียนการแสดงเงื่อนไข
1items = [1, 2, 3]
2
3### Bad Example
4if len(items) > 0:
5 pass
6
7### Good Example
8if items:
9 passการใช้ elif และ else อย่างเหมาะสม
เมื่อประเมินเงื่อนไขหลายข้อ ให้ใช้ elif ใช้ else เพื่อกำหนดพฤติกรรมเริ่มต้นในตอนท้าย
1score = 80
2
3if score >= 90:
4 grade = "A"
5elif score >= 80:
6 grade = "B"
7elif score >= 70:
8 grade = "C"
9else:
10 grade = "F"elseไม่จำเป็นต้องใช้เสมอไป หากครอบคลุมทุกเงื่อนไขแล้ว สามารถละเว้นได้- ให้ความสำคัญกับลำดับของการแสดงเงื่อนไขและจัดเรียงอย่างมีเหตุผลโดยไม่ซ้ำซ้อน
จำกัดความลึกของการซ้อนเงื่อนไข
การซ้อนคำสั่ง if หลายชั้นทำให้โค้ดอ่านยากขึ้น
1def access_resource():
2 return True
3
4### Bad Example
5def deep_nest(user, resource):
6 if user.is_authenticated:
7 if user.has_permission:
8 if resource.is_available:
9 access_resource()
10
11### Good Example
12def early_return(user, resource):
13 if not user.is_authenticated:
14 return
15 if not user.has_permission:
16 return
17 if not resource.is_available:
18 return
19
20 access_resource()- การใช้การคืนค่าก่อนจะช่วยลดการซ้อนและทำให้โค้ดกระชับขึ้น
หลีกเลี่ยงการใช้คำสั่ง if แบบบรรทัดเดียว
สามารถเขียนคำสั่ง if ในบรรทัดเดียวได้ แต่สิ่งนี้อาจทำให้โค้ดอ่านยากขึ้น
1condition = False
2def do_something():
3 return True
4
5### Bad Example
6if condition: do_something()
7
8### Good Example
9if condition:
10 do_something()- การใช้ if แบบบรรทัดเดียวเหมาะสำหรับเงื่อนไขหรือการกระทำสั้น ๆ เท่านั้น ควรหลีกเลี่ยงโค้ดที่ยืดยาวมากไป
การทำให้ง่ายขึ้นด้วย ternary operator หรือ or
สำหรับเงื่อนไขที่ไม่ซับซ้อน การใช้ ternary operator หรือ or จะทำให้โค้ดของคุณกระชับมากขึ้น อย่างไรก็ตาม หากใช้สิ่งเหล่านี้มากเกินไปจะทำให้โค้ดอ่านยาก จึงควรใช้กับเงื่อนไขที่ง่ายและเข้าใจได้โดยตรงเท่านั้น
1is_admin = True
2input_name = None
3
4# Regular if statement
5if is_admin:
6 role = "Administrator"
7else:
8 role = "User"
9
10# Simplified using an inline if
11role = "Administrator" if is_admin else "User"
12
13# Use 'or' to provide a default value
14name = input_name or "Guest"- ในกรณีเงื่อนไขที่ไม่ซับซ้อน การใช้ ternary operator หรือ
orจะทำให้โค้ดของคุณสั้นลงและเข้าใจง่ายขึ้น
การแคชการแสดงเงื่อนไข
การแสดงเงื่อนไขที่มีการคำนวณหนักหรือการเรียกฟังก์ชันสามารถแคชลงในตัวแปรเพื่อปรับปรุงประสิทธิภาพ
1def expensive_function():
2 pass
3
4def another_expensive_function():
5 pass
6
7### Bad Example
8if expensive_function() and another_expensive_function():
9 pass
10
11### Good Example
12result1 = expensive_function()
13result2 = another_expensive_function()
14if result1 and result2:
15 passสรุป
คำสั่ง if ของ Python เป็นเครื่องมือที่ง่ายและทรงพลัง แต่การใช้ที่ไม่เหมาะสมอาจทำให้โค้ดซับซ้อนและอ่านยาก โดยการนำนิสัยการทำงานที่ดีที่สุดที่แนะนำไว้ที่นี่มาใช้ คุณสามารถปรับปรุงความอ่านง่าย การดูแลรักษา และประสิทธิภาพของโค้ดของคุณได้
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย