Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

ว่าด้วยการปรับปรุงคุณภาพของ code ให้ดีขึ้น

$
0
0

code-quality

code-quality มีคำถามที่น่าสนใจมาก ๆ คือ เราต้องทำอย่างไรบ้างเพื่อดูแลรักษาคุณภาพของ code ? เราต้องทำอย่างไรบ้างเพื่อปรับปรุงคุณภาพของ code ให้ดีขึ้น ? ลองมาหาตอบคำถามกันหน่อยสิ

1. เริ่มต้นด้วยการเขียน Unit test ที่มีประโยชน์

โดยที่การเขียน unit test นั้นย่อมมี learning curve อยู่แล้ว แต่มันไม่ใช่ปัญหาใหญ่อะไรมากไปกว่าการไม่เขียน เป็นสิ่งที่ developer ต้องสนใจ ใส่ใจและฝึกฝน เพื่อให้เกิดเป็นทักษะของตนเอง จนทำให้กลายเป็นนิสัยของเราไปเอง
ผลที่จะได้รับกลับมาก็คือ คุณภาพของ code ที่ดีขึ้นกว่าเดิม เนื่องจาก unit test จะบังคับให้เราเขียน code ที่ง่ายต่อการทดสอบ นั่นก็คือ code แต่ละส่วนจะไม่ผูกมัดกันแน่นหรือเรียกว่า Tight coulping นั่นเอง ซึ่งทำให้การออกแบบมันดีขึ้นตามไปด้วย
การเขียน unit test นั้นต้องพิจารณาถึงความคุ้มค่าด้วยนะ แต่สำหรับผู้เริ่มต้นให้เขียนเยอะ ๆ เข้าไว้นะครับ จะทำให้เรารู้ว่าควรหรือไม่ควรเขียนอะไร อย่ามานั่งเถียงกันว่าจะเขียนหรือไม่เขียนดี ซึ่งมันเสียเวลาโดยเปล่าประโยชน์

2. แยกส่วนการทำงานออกจากกันอย่างเหมาะสม

สิ่งที่ developer ต้องให้ความสนใจก็คือ การจัดการเรื่อง dependency graph ที่เกิดขึ้นภายใน code ที่พัฒนา ว่าเราจัดการได้ดีเพียงใด ส่วนใหญ่มักจะแยกออกเป็นส่วนเล็ก ๆ แยกตามหน้าที่การทำงาน เช่น module และ namespace เป็นต้น ลด ละ เลิก เรื่องการใช้ Global variable ที่ถูกใช้งานจากทุก ๆ ส่วน จนสุดท้ายทำให้เราไม่รู้เลยว่า ใครมาแก้ไขหรือเปลี่ยนแปลงค่าอะไรบ้าง เป็นสาเหตุให้เกิดข้อผิดพลาดมากมายตามมา มีคำถามที่ต้องตอบให้ได้ในการออกแบบและเขียน code คือ ในส่วนการทำงาน A ต้องการ B จริง ๆ หรือไม่ ?

3. หัดเขียน code เพื่อคนอื่น ๆ บ้าง

บ่อยครั้งที่ developer มักจะเขียน code ด้วย pattern สวย ๆ บ่อยครั้งที่ developer มักจะเขียน code ด้วย pattern แปลกตา บ่อยครั้งพบว่า คนอื่น ๆ ในทีมมักไม่เข้าใจ และอาจจะทำตามแบบไม่เข้าใจ หรือ เข้าใจแบบผิด ๆ ไป ทำให้เกิดความผิดพลาดมากมายตามมา ดังนั้นแทนที่ code จะออกมาดีตามที่คาดหวัง กลับกลายว่าเกิดปัญหามากมายตามมาไป !! ดังนั้นถ้าต้องการเขียน code ในรูปแบบที่ทีมยังไม่เข้าใจ ก็ช่วยอธิบายให้ทีมเข้าใจและใช้งานเป็น หรือ ประยุกต์ได้ ไม่เช่นนั้นก็ลบไปเถอะครับ ของดีแต่อยู่ผิดที่ มันก็แย่ได้เช่นกัน

4. ลดความซับซ้อนของ code ลงซะบ้าง

ค่าความซับซ้อนของ code วัดด้วยค่า Cyclomatic complexity เพื่อวัดดูว่าใน code มีเส้นทางที่เป็นไปได้กี่เส้นทาง ดังนั้น code ที่ดีมาก ๆ คือ ค่าความซับซ้อนเท่ากับ 1 !! แต่ในความเป็นจริงเรากลับพบเงื่อนไข และ เส้นทางมากมายใน code เช่น if-else ก็เกิด 2 เส้นทางแล้ว ลองคิดดูสิว่า เรามี if-elseif-else กันเยอะไหม ? ลองคิดดูสิว่า เรามี loop ซ้อน loop กันเยอะไหม ? ซึ่งก่อให้เกิดปัญหามากมาย ส่งผลต่อเวลาในการพัฒนา ส่งผลต่อเวลาในการทดสอบ ส่งผลต่อจำนวน bug ที่เยอะขึ้น ส่งผลต่อเวลาในการ debug !! ส่งผลต่อเวลาในการเพิ่ม แก้ไข code รวมทั้งส่งผลต่อคุณภาพของ code ด้วย ดังนั้นควรลดค่าความซับซ้อนของ code ให้ต่ำมาก ๆ นะครับ

5. ตั้งชื่อให้ชัดเจน สื่อสารถึงหน้าที่การทำงาน

เป็นสิ่งที่ developer บอกว่ายากมาก ๆ แต่มันกลับส่งผลต่อคุณภาพของ code อย่างมากเช่นกัน ดังนั้นต้องฝึก อ่าน และ เขียนเยอะ ๆ ชื่อแย่ ๆ นำไปสู่ความเข้าใจผิดมากมาย ดังนั้นถ้ามีโอกาสก็ช่วยปรับปรุงชื่อต่าง ๆ ให้ดี สื่อสารให้ตรงความต้องการมากขึ้นนะครับ ตัวอย่างเช่นยังมีคนเข้าใจว่า Java กับ Javascript มันเหมือนกันอยู่เลย !!

โดยสิ่งต่าง ๆ เหล่านี้เป็นสิ่งที่ยากน่าดู

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

Viewing all articles
Browse latest Browse all 1997

Trending Articles