12 สิงหาคม 2556

[Android Dev Tips] ใช้ IF-ELSE ยังไงให้สั้น [บางกรณีเท่านั้น]


        บทความนี้จะว่าเป็นบทความเขียนฆ่าเวลาก็เป็นได้ แต่ถึงจะเป็นบทความฆ่าเวลา แต่ก็ไม่ได้ไร้สาระนะ เพราะจะเป็นเคล็ดลับเล็กๆน้อยๆให้ได้ลองนำไปใช้ดู

        สำหรับบทความนี้จะใช้กับกรณีที่คำสั่งในแต่ละเงื่อนไขมีแค่คำสั่งเดียวนะครับ
        โดยปกติแล้วการเขียน IF-ELSE จะใช้หลายบรรทัดอยู่ ซึ่งมีรูปแบบฟอร์มการใช้เงื่อนไขดังกล่าว ตามนี้
double d = Math.rand(); if(d >= 0.5) { d = d * d; } else { d = d + d; }
        อันนี้ก็เป็นรูปแบบทั่วไปที่คุ้นเคยกันดี โดยสุ่มตัวเลขเก็บใน d แล้วเช็คว่า d มากกว่าเท่ากับหรือน้อยกว่า 0.5 ก็จะทำเงื่อนไขต่างกัน จะเห็นว่าโค๊ดข้างบนนี้ใช้ไป 5 บรรทัด (ไม่รวมคำสั่งแถวแรกสุด) ซึ่งเอาจริงๆก็ไม่ได้เยอะมากมายหรอก แต่เขียนสั้นๆเอามันส์ก็พอ

        เนื่องจากเจาะจงว่าใช้กับคำสั่งในแต่ละเงื่อนไขมีแค่บรรทัดเดียวเท่านั้
double d = Math.rand(); if(d >= 0.5) d = d * d; else d = d + d;
        ก็ตัดปีกกาออกไปได้เลย ยังไง IF-ELSE ก็จะทำคำสั่งนั้นๆเหมือนเดิม

        แต่ก็ยังทำให้มันสั้นกว่านี้ได้อีกนะ เพราะ IF-ELSE มีรูปฟอร์มแบบสั้นอยู่ ซึ่งถ้าผู้ที่หลงเข้ามาอ่านคนใดที่เขียนโปรแกรมบ่อยๆก็คงจะทราบดีกัน
double d = Math.rand(); d = (d >= 0.5) ? d * d : d + d;
        เท่านี้คำสั่งก็เหลือแค่บรรทัดเดียว ซึ่งการใช้ IF-ELSE ในรูปฟอร์มแบบสั้น จะเป็นดังนี้
Variable = ( Condition ) ? True : False ;
        จะเห็นว่า รูปแบบสั้นจะใช้ได้เฉพาะกรณีกำหนดค่าด้วย = เท่านั้น แต่ไม่ตายตัวว่าเป็นตัวแปร (Variable) จะใช้กับวัตถุ (Object) ก็ได้

        โดยที่ Condition คือเงื่อนไขทีต้องการ ว่าจะเช็คด้วยเงื่อนไขอะไร และช่อง True คือคำสั่งที่จะกำหนดค่า ในกรณีที่เงื่อนไขเป็นจริง ส่วน False ก็คือคำสั่งที่กำหนดค่า ในกรณีที่เงื่อนไขเป็นเท็จ

double d = Math.rand(); View v = ( d >= 0.5 ) ? findViewById(R.id.view1) : findViewById(R.id.view2);
        อย่าลืมว่าใช้กับ Object เฉพาะเวลากำหนดค่าเหมือนกับ Variable  หรือพูดง่ายๆก็คือ ฟังก์ชันอะไรก็ได้ที่มีการ Return ค่ากลับมา แล้วต้องมี Variable หรือ Object มารับค่าด้วยทุกครั้ง (มีเครื่องหมาย =)

        เอาไปลองใช้เล่นๆดู ช่วยประหยัดบรรทัดเวลาพิมโค๊ดๆเยอะๆดีนะ เวลาไล่ดูโค๊ดจะได้ไม่ลายตามาก 55555555




เหล่าพันธมิตรแอนดรอยด์

Devahoy Layer Net NuuNeoI The Cheese Factory Somkiat CC Mart Routine Artit-K Arnondora Kamonway Try to be android developer Oatrice Benz Nest Studios Kotchaphan@Medium Jirawatee@Medium Travispea@Medium