copy_paste_002
ใครๆ ก็รู้ว่าการ Copy and Paste มันแย่ !!
เชื่อว่านักพัฒนาทุกๆ คน ไม่ชอบ
เพราะว่า code ที่ได้มานั้นมันดูแลรักษายาก
เพราะว่า code เรามักมีส่วนที่ทำงานซ้ำๆ กันเยอะมาก !!
เพราะว่า code จะมีจำนวน branch condition ซ้ำกันเยอะมาก !!

ผลที่ตามมาคืออะไรล่ะ ?
ต้องตามไปแก้ไขซ้ำแล้วซ้ำอีก หลายๆ ที่ใช่ไหม ?
แต่แปลกนะที่นักพัฒนาส่วนใหญ่ชอบใช้วิธีการนี้กันบ่อยมากๆ

Copy and Paste คืออะไร

ในที่นี้ ไม่ใช่หมายถึงการ copy code จาก internet มาใช้นะ
ซึ่งมันมาพร้อมทั้งประโยชน์ และ ปัญหา

แต่มันหมายถึงการที่นักพัฒนามักจะพูดว่า reuse code จากระบบอื่นๆ
มาใช้งานในระบบงาน เนื่องจากมีปัญหาที่ต้องการแก้ไขนั้น
มันเหมือนกับระบบอื่นๆ ที่เราทำกันมาแล้ว
ดังนั้นจึงทำการ reuse code ด้วยการ Copy and Paste นั่นเอง

มันใช่สิ่งที่ถูกต้องหรือเปล่านะ !!
มันขัดแย้งกับแนวคิด Don’t Repeat Yourself (DRY) มากเลยนะ !!

แล้วทำไมนักพัฒนาชอบใช้วิธีการนี้ล่ะ ?

มันง่ายไงล่ะ !!
มันช่วยประหยัดเวลาในการแก้ไขปัญหา
ทำให้เรา focus ไปที่การแก้ไขปัญหาเท่านั้น

แต่สิ่งที่นักพัฒนามักหลงลืมไปก็คือ
เราต้องการใช้ code ที่ Copy and Paste มาทั้งหมดหรือเปล่านะ ?
เราควรใช้เฉพาะ code ที่จำเป็นใช่หรือเปล่านะ ?
ส่วน code ไหนที่ไม่ได้ใช้ก็ควรลบออกไปใช่ไหม ?

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

เหตุผลต่อมาก็คือ มันช่วยลดความเสี่ยง

ถ้านำ code ที่มันทำงานได้มาใช้ น่าจะทำให้เราปลอดภัยสุดๆ แล้วนะ
รวมทั้งค่าใช้จ่ายในการแก้ไขปัญหามันก็น้อยลงสินะ
ดังนั้น เราจึงเริ่มทำงานด้วยการ Copy and Paste

สิ่งที่น่าสนใจสำหรับ Copy and Paste ก็คือ

มันจะทำให้เราเห็นว่ามีพฤติกรรมที่มันมักจะทำซ้ำๆ เช่น
code ที่มันซ้ำๆ ก็ต้องทำการ refactor code ใช่ไหม ?
มีขั้นตอนใจที่มันซ้ำๆ กัน เช่นการทดสอบ
สามารถสร้างเป็น automated test ได้ด้วยนะเออ ใช่ไหม ?
ซึ่งมันคือสิ่งที่ควรจะต้องเป็นไปใช่ไหม ?

ดังนั้นลองถามตัวเราเองหน่อยว่า

บ่อยไหมที่คุณใช้วิธี Copy and Paste code ?
บ่อยไหมที่คุณต้องแก้ไขปัญหาเดิมๆ ซ้ำแล้วซ้ำเล่า ?
คุณรู้ไหมว่า code ที่คุณนำมาใช้งาน มันทำงานจริงๆ คืออะไร ?
คุณรู้ไหมว่า code ของคุณมีส่วนที่ซ้ำๆ กันตรงไหนบ้าง เท่าไร ?

Copy and Paste Programming นั้นมันไม่ได้มาแบบฟรีๆ นะ

เนื่องจากมันมาพร้อมค่าใช้จ่ายต่างๆ ตามมามากมาย
แต่ไม่ได้บอกว่า มันจะดี หรือ ไม่ดี
แต่คุณเองในฐานะนักพัฒนา ต้องทำความเข้าใจด้วยว่า
เมื่อไรควรจะใช้ หรือ ไม่ใช้