วันอาทิตย์ที่ 21 กรกฎาคม พ.ศ. 2556
เทคนิคเกี่ยวกับการใช้ if .... else
ไม่ควรใช้ if (not...) then ... else
ผมว่ามันตลกนะ ถ้าแบบมีคนสั่งว่า "ถ้าไม่มีป้ายบอกทางว่าเลี้ยวซ้ายผ่านตลอด ให้หยุดรอสัญญาณไฟ นอกเหนือจากนั้นแล้วให้เลี้ยวซ้ายผ่านไป" ..
คือมันเป็นการใช้ปฎิเสธซ้อนปฎิเสธน่ะครับ ถ้าเป็นคนปรกติพูดเราก็จะพูดกันว่า "ถ้ามีป้ายบอกว่าเลี้ยวซ้ายผ่านตลอดก็เลี้ยวซ้ายผ่านไป แต่ถ้าไม่มีให้หยุดรอสัญญาณไฟ" มากกว่าใช่ไหมครับ
เวลาเขียนโปรแกรมก็เหมือนกัน ผมคิดว่าเราไม่ควรใช้ปฎิเสธซ้อนปฎิเสธครับ อย่างโค๊ดข้างล่างนี่
if(!recordAvailable())
createNew();
else
updatePresent();
เวลาเขียนก็ควรเป็นแบบนี้มากกว่า
if(recordAvailable())
updatePresent();
else
createNew();
ผมว่ามันอ่านง่ายกว่านะ
ใช้ if(not success) เพื่อออกจากโปรแกรม แทนที่จะใช้ if(sucess) แล้วทำต่อ
หลาย ๆ ฟังก์ชั่นจะคืนค่าเป็น error code กลับมา ถ้าเกิดว่าเราเขียนว่า if (success) แล้วทำต่อเนี่ยมันจะกลายเป็นการสร้าง statement ย่อย ๆ เพิ่ม พอยิ่งพ่วงกันยาว ๆ แล้วมันก็จะยิ่งเพิ่มระดับของ statement ไปเรื่อย ๆ จะทำให้โค๊ดอ่านยากครับ
อย่างเช่นโค๊ดแบบนี้
int init()
{
if(initVideo() == SUCCESS)
{
if(initAudio() == SUCCESS)
{
if(initDatabase == SUCCESS)
{
return SUCCESS;
}
}
}
cleanUp();
return FAILED;
}
เกิดมีสัก 10 ฟังก์ชั่นนี่ตายเลย แถมเขียนผิดไปสักระดับหนึ่งนี่ไล่หากันไปเถอะครับ เขียนแบบนี้แทนอ่านง่ายกว่าเยอะครับ
int init()
{
if(initVideo() == FAILED)
{
cleanUp();
return FAILED;
}
if(initAudio() == FAILED)
{
cleanUp();
return FAILED;
}
if(initDatabase == FAILED)
{
cleanUp();
return FAILED;
}
return SUCCESS;
}
credit: Wutipong Wongsakuldej
ป้ายกำกับ:
c++,
programming
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น