Tutorial

[Dev Tip] เมื่อ If ครอง Code

By Arnon Puitrakul - 14 กรกฎาคม 2015

[Dev Tip] เมื่อ If ครอง Code

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

if ()
{
   if ()
   {
      if ()
      {
        if ()
        {

        }
      }
   }
}

If ซ้อนกันเต็มไปหมด จนโค๊ตกลายเป็น Wave กันเลยทีเดียว แต่ตอนนั้นก็กลับมาถามตัวเองเหมือนกันว่า ทำไมเราถึงเขียนออกมาแบบนั้น แล้วถ้าโปรแกรมเรามีคนเอาไปทำต่อ มันจะเป็นยังไงหว่า อะไรทำนองนั้นกันเลยทีเดียว

แล้วทำไมเราถึงเขียน Code แบบนี้ออกมาได้ ?

ความขี้เกียจของเรา หรือว่า เราไม่เข้าใจ Requirement กันแน่ คิดไปได้เหตุผลล้านพันแปดเลยทีเดียว แต่สิ่งที่เราควรจะถามตัวเองจริง ๆ คือ ในเมื่อมันไม่ดี แล้วเราจะแก้ยังไงให้มันดูดีขึ้น อ่านง่ายขึ้น
มันเลยทำให้ผมกลับมาถามตัวเองอีกว่า เราเคย Refactor Code ตัวเองบ้างรึเปล่า ?

Refactor Code คืออะไร ?

มันคือการแก้ Code ที่เราเขียนจนรันได้เรียบร้อยแล้ว ให้ สั้นลง กระชับ อ่านง่ายมากขึ้น และที่สำคัญคือลดความซับซ้อนของตัว Code ลง เหมือนกับถ้าเรามองโปรแกรมของเราเหมือน เครื่องบิน ลำนึง ในการที่เครื่องบินจะบินได้ดี มันก็ต้องเบา แต่ยังคงความแข็งแรงได้เหมือนเดิม เราอาจจะต้องเอานั่นเอง เปลี่ยนนี่หน่อย เพื่อให้ได้เครื่องบินที่เบาที่สุด และแข็งแรงที่สุดในเวลาเดียวกันนั่นเอง
ดังนั้นการ Refactor Code ของเรานั้นเป็นเรื่องที่ผมว่าค่อนข้างสำคัญอยู่เหมือนกัน เพราะว่า คนเรา ตอนคิด ตอนเขียน เราอาจจะมองภาพรวมของมันไม่ออกก็ได้ แต่หลังจากที่เราเขียนจนเสร็จแล้ว มันก็น่าจะทำให้เราเห็นภาพรวมของมันได้ง่ายขึ้น ทำให้เราสามารถแก้โค๊ตของเราได้ถูกจุด กระชับ และทำงานได้รวดเร็วมากขึ้น

Read Next...

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

เวลาเราทำงานกับข้อมูลอย่าง Pandas DataFrame หนึ่งในงานที่เราเขียนลงไปให้มันทำคือ การ Apply Function เข้าไป ถ้าข้อมูลมีขนาดเล็ก มันไม่มีปัญหาเท่าไหร่ แต่ถ้าข้อมูลของเราใหญ่ มันอีกเรื่องเลย ถ้าเราจะเขียนให้เร็วที่สุด เราจะทำได้โดยวิธีใดบ้าง วันนี้เรามาดูกัน...

ปั่นความเร็ว Python Script เกือบ 700 เท่าด้วย JIT บน Numba

ปั่นความเร็ว Python Script เกือบ 700 เท่าด้วย JIT บน Numba

Python เป็นภาษาที่เราใช้งานกันเยอะมาก ๆ เพราะความยืดหยุ่นของมัน แต่ปัญหาของมันก็เกิดจากข้อดีของมันนี่แหละ ทำให้เมื่อเราต้องการ Performance แต่ถ้าเราจะบอกว่า เราสามารถทำได้ดีทั้งคู่เลยละ จะเป็นยังไง เราขอแนะนำ Numba ที่ใช้งาน JIT บอกเลยว่า เร็วขึ้นแบบ 700 เท่าตอนที่ทดลองกันเลย...

Humanise the Number in Python with "Humanize"

Humanise the Number in Python with "Humanize"

หลายวันก่อน เราทำงานแล้วเราต้องการทำงานกับตัวเลขเพื่อให้มันอ่านได้ง่ายขึ้น จะมานั่งเขียนเองก็เสียเวลา เลยไปนั่งหา Library มาใช้ จนไปเจอ Humanize วันนี้เลยจะเอามาเล่าให้อ่านกันว่า มันทำอะไรได้ แล้วมันล่นเวลาการทำงานของเราได้ยังไง...

ทำไม 0.3 + 0.6 ถึงได้ 0.8999999 กับปัญหา Floating Point Approximation

ทำไม 0.3 + 0.6 ถึงได้ 0.8999999 กับปัญหา Floating Point Approximation

การทำงานกับตัวเลขทศนิยมบนคอมพิวเตอร์มันมีความลับซ่อนอยู่ เราอาจจะเคยเจอเคสที่ เอา 0.3 + 0.6 แล้วมันได้ 0.899 ซ้ำไปเรื่อย ๆ ไม่ได้ 0.9 เพราะคอมพิวเตอร์ไม่ได้มองระบบทศนิยมเหมือนกับคนนั่นเอง บางตัวมันไม่สามารถเก็บได้ เลยจำเป็นจะต้องประมาณเอา เราเลยเรียกว่า Floating Point Approximation...