My Python coding pitfall

ที่ผ่านมาการเขียนโปรแกรมด้วยภาษา Python ถือเป็นการเขียนโปรแกรมที่ง่าย และมีข้อจำกัดน้อย แต่ก็ทำให้บางครั้งก็เป็นการสร้าง bug ให้กับตัวเองเหมือนกัน โพสต์นี้เลยอยากจะสรุปปัญหาที่เจอบ่อยๆในการเขียนโปรแกรมด้วย Python ของผมเอง เผื่อจะมีประโยชน์กับคนอื่นๆด้วยครับ

int กับ round

ปกติการแปลงตัวอักษรให้เป็นตัวเลข หากไม่มีจุดทศนิยม การใช้ int ก็จะไม่มีปัญหาอะไร แต่หากมีจุดทศนิยมเมื่อไหร่ ปัญหาตามมาทันที

int(2.3) = 2
int(2.8) = 2

การแก้ปัญาหาคือ หากต้องจัดการกับจุดทศนิยม ให้ใช้ฟังก์ชั่น round แทน

round(2.3) = 2
round(2.8) = 3

การอ่านค่าจาก key ที่ไม่มีใน dictionary

เช่น หากต้องการอ่านค่า

var1 = myvar['mykey1'] 

แล้วหากไม่มี key mykey1 ก็จะทำให้โปรแกรม error ได้ จึงต้องมาทำการเขียนโค้ดเพื่อดักเช็ค error นี้ แต่ Python มีวิธีที่ง่ายกว่านั้น คือใช้คำสั่ง ดังนี้

var1 = myvar.get('mykey1',0)

ซึ่งตามตัวอย่าง หากไม่มีคีย์นี้ ก็จะคืนค่า 0 กลับมาให้ ซึ่งเป็นค่า default ที่เราสามารถกำหนดเองได้

การผสมปนเปกันระหว่าง Business Layer (Logic) กับ Presentation Layer

ในระบบที่ทำ บางครั้งเพื่อความสะดวกจะให้มีการคำนวนในหน้าเว็บด้วย JavaScript เลย แม้จะสะดวกก็จริง แต่ป้ญหาก็คือ หากเรามีความจำเป็นต้องมีการคำนวนส่วนนั้นใหม่ เพื่อเป็นการ update ค่าต่างๆ ก็จำเป็นจะต้องมีการเปิดหน้าเว็บนั้นขึ้นมา ทำให้ไม่สะดวกอย่างมากในการที่จะทำงานประเภท automate หรือ patch ค่าต่างๆ ทางแก้ก็คงจะต้องทำเป็น Ajax call เพื่อส่งค่าจากหน้าเว็บกลับไป Back-end เพื่อการคำนวน แล้วส่งผลลัพธ์กลับไปแสดงที่หน้าเว็บใหม่ โดยไม่มีการใส่ Business Logic ไว้ที่หน้าเว็บเลย