Screen Shot 2558-02-22 at 9.12.33 AM
เรื่องที่ 30 ที่นักพัฒนาควรรู้ และ เข้าใจก็คือ Take Advantage of Code Analysis Tools
คุณค่าจากการทดสอบนั้น มันคือบางสิ่งบางอย่าง
ที่จะต้องเกิดขึ้นตั้งแต่แรกๆ และเกิดขึ้นอยู่ตลอดเวลา ในกระบวนการพัฒนา software
โดยที่ในปัจจุบัน คำว่า

  • Unit test
  • Test Driven Development (TDD)
  • Agile

ได้เข้ามามีบทบาทมากๆ ในการพัฒนา software มากๆ
ส่วนการทดสอบนั้น มันมีหลายระดับ รวมทั้ง มีเครื่องมือช่วยเหลือมากมาย
ซึ่งหนึ่งในนั้น คือ Code Analysis tool
เพื่อช่วยปรับปรุงคุณภาพของ code ให้ดีขึ้น

เมื่อย้อนกลับไปในอดีต เป็นยุคที่หน่วยความจำ และ CPU มันแพงมากๆ

ภาษา C ได้เกิดขึ้นมา ซึ่งถือว่าเป็นภาษา ที่ compiler
ช่วยตัด code ที่ไม่จำเป็นออกไป แต่ความหมายยังคงเหมือนเดิม (Semtatic Analyze)
นั่นหมายความว่าในช่วงการ compile ได้ทำการตรวจสอบ bug ไปด้วย

ยังไม่พอ จากนั้นคุณ Stephen Johnson ได้สร้างเครื่องมือที่ชื่อว่า lint ขึ้นมา
เพื่อตรวจสอบ และ ลบความผิดพลาดต่างจาก code ออกไป
เรียกว่าเป็น Static analyze ซึ่งกลายมาเป็นหนึ่งใน Static analyze tool นั่นเอง

แต่เครื่องมือเหล่านี้มันจะทำการตรวจสอบ และ สรุปสิ่งต่างๆ ออกมาให้
พบว่าจะมี waring ในเรื่องต่างๆ เยอะมาก
และพบว่า developer ส่วนใหญ่ไม่อยากจะทำตาม หรือ แก้ไขด้วยนะสิ

แต่ในปัจจุบันนั้น โลกมันเปลี่ยนไปอย่างมากมาย

ราคาของหน่วยความจำและ CPU มันถูกมากๆ
ทำให้แต่ละภาษาโปรแกรมมีการทำงานที่เปลี่ยนไปอย่างมาก
รวมถึง Static analyze tool เช่นกัน
โดยที่ compiler จะพยายามทำการตรวจสอบ error ต่างๆ ให้ได้มากที่สุด
ตัวอย่างเช่น

  • ตรวจสอบรูปแบบของ code ที่อาจจะก่อให้เกิดการทำงานที่ผิดพลาด
  • ตรวจสอบ code ที่ไม่ถูกใช้งาน หรือ library ที่ไม่ถูกใช้งาน
  • Code ที่ต้องสงสัย
  • การอ้างถึง null pointer

รวมไปถึงแต่ละภาษาก็มี IDE ช่วยเหลืออีกด้วย
ซึ่งมันทำให้ code ที่เราสร้างขึ้นมามีคุณภาพมากยิ่งขึ้น
แต่ถึงยังไง สิ่งที่ใช้งานก็คือ คน
ดังนั้น วินัยของคนที่ใช้งานต้องสูงมากเช่นกัน

ดังนั้นในเครื่องพัฒนาของแต่ละคน

จะต้องมี Static analyze tool อยู่
และต้องใช้งานอยู่อย่างสม่ำเสมอ เช่น
จะต้อง run ทุกๆ ครั้งเมื่อทำการเปลี่ยนแปลง code
หรือให้มันทำงานแบบอัตโนมัติก็ได้ (Continuous Testing) เป็นต้น
เพื่อทำให้คุณรู้ก่อนว่า มีข้อผิดพลาดอะไรบ้าง
และแก้ไขมันได้อย่างรวดเร็ว

ถ้าคุณใช้ IDE แล้ว พวก error และ warning ต่างๆ
จะต้องไม่ให้เกิดขึ้น ใช่หรือเปล่า ?
ลองกลับไปดู code ที่คุณสร้าง หรือ กำลังพัฒนา มันมีไหม ?
ถ้ามีแสดงว่าวินัยของคุณยังไม่ดี ต้องปรับปรุงนะ !!!

คุณใช้งาน Style checker ไหม ?
คุณใช้งาน Lint ไหม ?
คุณใช้งาน PMD ไหม ?
คุณใช้งาน Findbugs ไหม ?

ถ้ายังแนะนำให้นำมาใช้เถอะครับ

ดังนั้น

อย่าทำการทดสอบหลังจากที่พัฒนาเสร็จ โดยทีม QA เพียงอย่างเดียว
แต่ให้ทำการทดสอบอยู่อย่างสม่ำเสมอ และ บ่อยๆ

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

แปลกนะ ที่นักพัฒนาส่วนใหญ่ไม่ค่อยสนใช้ ไม่รู้จัก และ ไม่ใช้งานกัน