มาใช้ Code Beautifier กันเถอะ

วันนี้เห็นทีมข้าง ๆ เขาคุยกันเรื่องนี้ ก็เลยเอามาแชร์กันซะหน่อย

Code Beautifier หรือ Prettier หรือ Formatter เป็นเครื่องมือที่ใช้ในการจัดฟอร์แมทของโค๊ดให้อยู่ในรูปแบบที่สวยงาม … ก็ตามชื่อนั่นล่ะครับ ตัวโปรแกรมเองก็มีตั้งแต่แค่ regex บ้าน ๆ ธรรมดา ยันใช้คอมไพล์เลอร์ช่วยในการแบ่งส่วนประกอบในโค๊ด ตรงนี้ใครชอบอะไรชอบตัวไหนก็เอาตามที่ชอบเลยครับ

ส่วนตัวผมใช้ Clang-Format กับ Code Maid ครับ

คำแนะนำทั่ว ๆ ไปสำหรับการใช้ tool ตัวนี้คือ ถ้าคุณยังไม่ได้ใช้ … ก็จงหามาใช้ ถ้ายังต้องเรียกใช้ด้วยมือ … เขียนสคริปท์ให้มันทำงานอัตโนมัติ ถ้าทำงานกันหลาย ๆ คน … ใส่ไว้ใน commit hook ซะ

เอาง่าย ๆ คือใช้ให้บ่อยที่สุดเท่าที่ทำได้นั่นเอง

ฟังดูเป็นคำแนะนำที่บ้าระห่ำมากใช่ไหมครับ ความจริงคือ เรื่องของ code format เนี่ยมันเป็นเรื่องเฉพาะคน โปรแกรมเมอร์แต่ละคนก็จะนิยมใช้ไม่เหมือนกัน บางคนชอบแท๊บ บางคนชอบอินเดนท์ละ 8 สเปซ บางคนชอบเอา brace ไว้บรรทัดเดียวกับ if

บางคนเขียนแบบนี้ก็มี

double
CalculateArea(double side)
   {
   return side * side;
   }

เคยเห็นไหมครับ ??

ดังนั้นวิธีที่ดีที่สุด เพื่อไม่ให้สมาชิกในทีมต่อยกันในเรื่องฟอร์แมทของโค๊ด ก็คือใช้ทูลจัดการมันซะเลย ถ้าคุณไม่ชอบก็ไปเปิด issue ให้คนทำทูลแก้ซะ (ซึ่งเขาไม่ทำหรอก เชื่อสิ) … ข้อดีอีกอย่างของการใช้ทูลในการจัดฟอร์แมทก็คือ ถ้าต่างคนต่างมีฟอร์แมทที่ตัวเองชอบ เราสามารถใช้ทูลในการแก้ให้โค๊ดอยู่ในฟอร์แมทที่เราชอบตอนที่เราเปิดโค๊ด แก้โค๊ด จากนั้นก็กดเซฟ โดยให้ทูลทำงานอีกครั้งตอนเซฟ กลับไปเป็นฟอร์แมทกลางที่ทุกคนตกลงกันซะ (แล้วรันอีกทีตอน commit code)

ทีนี้ก็ ข้อควรระวัง …

ข้อแรกเลยคือ เลือก tool ให้ถูกต้อง ใช้ตัวที่เป็นที่นิยมหน่อย ที่สำคัญคือ tool ที่ใช้ต้องไม่ทำให้โค๊ดพัง และไม่เปลี่ยนการกทำงานของโค๊ด ขยายความข้างหลังนิดนึง บางภาษาจะค่อนข้าง sensitive กับ whitespace มาก (เช่น Python) ในบางภาษาเครื่องหมายบางอย่างจะต้องอยู่ถูกที่ ไม่งั้นทำงานผิด (เช่น javascript) ถ้าใช้ tool ที่ไม่รู้เรื่องพวกนี้ ก็อาจจะทำให้โค๊ดพังได้ครับ

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

ข้อที่สาม คือข้อที่เจอมาวันนี้ครับ นั่นคือ ถ้าเรายังไม่ตกลงกันว่าจะใช้ tool นี้จริงจัง แต่อยากจะนำมาใช้ ให้รันเฉพาะบนฟังก์ชันที่เราเขียนเท่านั้น อย่าไปรันบนโค๊ดเดิมที่เราไม่ได้แก้ครับ เพราะมันจะกลายเป็นการเปลี่ยนทั้งไฟล์ คนที่จะมาอ่านโค๊ดต่อจะไม่รู้ว่าคุณแก้โค๊ดตรงไหนน่ะครับ

… อ่านจบแล้ว ก็ ทดลองใช้ code formatter กันดูนะครับ ลองกับโค๊ดตัวเองก่อนนะครับ 🙂

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

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