แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่งเงื่อนไขในภาษาไพธอน

แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่งเงื่อนไขในภาษาไพธอน

บทความนี้อธิบายแนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่งเงื่อนไขในไพธอน

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 ด้วย

YouTube Video