Code สวย

เมื่ออาทิตย์ก่อนหน้าโน๊นพี่ roof ตั้งคำถามใน fb ว่า ตั้งแต่ทำงานมามีที่ทำงานที่ไหนให้ความสำคัญกับคำว่า “โค้ดสวย” บ้างครับ แม้ผมจะตอบกวนตีนไปว่าคนเขียน code สวยสำคัญกว่า แต่ตัวคำถามก็น่าสนใจจนต้องมาย้อนนึกคำตอบอยู่เหมือนกัน

สมัยผมยังทำงานเป็นโปรแแกรมเมอร์บริษัทแรกที่ผมทำ (อย่างน้อยก็ทีมที่ผมอยู่) ไม่มีแนวคิดเรื่อง code สวยครับ คือมีสอน coding convention บ้างว่าตัวแปรควรจะตั้งชื่ออย่างไร ชื่อ database แต่ละ table ควรจะตั้งอย่างไรก่อนเข้าทำ project แค่นั้น

แต่ตอนได้ทำงานจริงๆ ผมและเพื่อนร่วม project ก็ได้เรียนรู้ว่า code แบบไหนที่คนเขียนแล้วด่า (ด่าแรงๆ ก็ด่ายันพ่อคนเขียน code อีกที) แล้วพวกเราก็เรียนรู้ที่จะไม่เขียน code แบบนั้น ซึ่งส่วนใหญ่ไอ้ที่เราด่าจะเป็นอะไรที่ง่าวสุดๆ แบบเห็นได้ชัด ส่วนไอ้ที่ไม่ควรเขียนแต่เราไม่รู้เนี่ยเราก็นั่งอ่านผ่านๆ ตาทุกวันจนกระทั่งเกิดความเคยชิน ติดนิสัยเขียนแบบนั้นตามไปด้วย ซึ่งเหตุการณ์นี้ก็ยังเกิดตอนผมมาทำบริษัทที่ 2 อยู่ดี

ในบริษัทปัจจุบันที่ผมทำอยู่ ผมไม่ได้เป็นโปรแกรมเมอร์แล้ว (ที่นี่เรียกว่า dev) ผมไม่รู้ว่ามีการเน้นการเขียน code ที่ถูกต้องหรือไม่ แต่ผมก็รู้ว่าพวกเขามีการทำ code review กันทุกอาทิตย์ ส่วนงานของผมจะเน้นไปที่อ่านและ debug code ที่ตัวเองไม่ได้เขียนเป็นหลัก code ที่ผมมีความสุขที่ได้ทำงานด้วยคือ code ที่ผมเห็นแล้วรู้ทันทีว่ามันทำอะไรโดยไม่ต้องอ่าน comment หรือ debug ดู และถ้า code นั้นผมเห็นแล้วถึงกับร้องว่าเหยด คิดได้ยังไงจะยิ่งฟินสุดๆ ซึ่งก็พอจะมี dev ที่เป็นเพื่อนผมอยู่ 2-3 คนที่เขียนได้ประมาณนี้แล้วก็มีหลายๆ ครั้งที่ส่วนนั้นมันเจ๋งจนผมจำได้ว่าเวลาจะไล่อะไรก็ไปเริ่มไล่ในจุดนั้นแหละ แต่ไอ้ code พวกนั้นก็ไม่ได้รับรองว่าตัวมันทำงานจริงๆ มันจะช้าจะเร็วอย่างไร หรือนานๆ ไปมันจะมี bug ไหม ควร refactor อีกรึเปล่า (เพราะไม่ใช่หน้าที่ผม – แต่ก็เห็น dev refactor กันอยู่บ้างนานๆ ทีอ่ะนะ)

ทั้งหมดทั้งปวงที่กล่าวมาก็คือผมเองก็ไม่รู้ว่า code ที่สวยนั้นเป็นอย่างไร ส่วนตัวชอบ code ที่อ่านง่าย เข้าใจได้เลยโดยไม่ต้องอ่าน comment หรือ debug และ code นั้นจะไม่ควรจะง่าวระดับสุดๆ จนดูแล้วอยากด่านั่นเอง

ป.ล. พี่ roof เขียนถึงการพัฒนา software ที่เน้นเรื่อง performance จนละเลย maintainability ไว้แล้วครับ

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.