Jitrak Blog

What is Yoda conditions?

อะไรคือ Yoda conditions

15 May 2024 04:00

Written by: Yosapol Jitrak

Tags:

Programming style

การเขียนโปรแกรมมักมีมีมหรือการตั้งชื่อเรียกต่าง ๆ ที่เป็นที่รู้จักกัน ซึ่ง Yoda conditions ก็เป็นหนึ่งในนั้น

บทความนี้เริ่มมาจาก เจอ Yoda conditions ในงานที่ทำ และพอลองสอบถามหลายคนในทีม ก็ไม่รู้จักกัน เลยอยากแบ่งปันให้หลายคนที่อาจจะไม่รู้จัก ได้รู้กันครับ

Yoda speak

ก่อนอื่นเรามาดูตัวอย่างการพูดของ Yoda จาก Star Wars เสียก่อน เช่น

ถ้าดูจากรูปประโยคข้างต้น จะรู้สึกว่ามันแปลก ๆ กับประโยคภาษาอังกฤษทั่วไป ที่ควรจะเป็น “You must go” หรือ “I can help you” แต่กลับเป็น “Go you must” หรือ “Help you I can” ซึ่งเป็นลักษณะของการพูดของตัวละคร Yoda จากเรื่อง Star Wars

Yoda conditions

แล้วมันเกี่ยวกับการเขียนโปรแกรมของเรายังไงละ ลองมาดูตัวอย่างกัน

if (5 == count) {
  // do something
}

ในตัวอย่างข้างต้นเราจะเห็นว่าเราใช้ 5 == count แทนที่จะเขียน count == 5 ซึ่งเป็นการใช้ Yoda conditions ในการเขียนโปรแกรม

Yoda conditions Credit image: “Yoda Conditions”, “Pokémon Exception Handling” and other programming classics

Yoda conditions คือการเขียนเงื่อนไขในภาษาโปรแกรมโดยที่เราจะเอาค่าคงที่ไปไว้ด้านซ้ายของเงื่อนไข และตัวแปรที่เราต้องการเปรียบเทียบไปไว้ด้านขวาของเงื่อนไข

if (constant == variable)

แทน

if (variable == constant)

การใช้ Yoda conditions อาจจะช่วยป้องกันการเขียนโค้ดที่ผิดพลาดเนื่องจากการใช้ = แทน == หรือ === ซึ่งเป็นข้อผิดพลาดที่อาจพบได้ในการเขียนโปรแกรม แทนที่จะเป็นการเปรียบเทียบค่า กลับกลายเป็นการกำหนดค่าให้ตัวแปรเฉย รูปแบบการเขียนนี้มีหลายเจ้าที่ใช้เป็นมาตราฐาน เช่น Wordpress/PHP Coding Standards/Yoda Conditions

if ( true === $the_force ) {
    $victorious = you_will( $be );
}

Avoid

แต่วิธีการนี้ขัดแย้งกับหลักการคิดของมนุษย์ ทำให้โค้ดนั้นอ่านยากขึ้น จึงควรหลีกเลี่ยง การแก้ปัญหาที่ใช้เครื่องหมายผิด ควรใช้ Linter ช่วย และเป็นความรับผิดชอบของผู้เขียนโปรแกรมมากกว่า

หวังว่าบทความนี้จะเป็นประโยชน์กับคนที่เข้ามาอ่านกันนะครับ เจอกันใหม่บทความหน้าครับ