Fable Tales และ Anna Mason ทีมงาน Stripe รายงานถึงการจัดฟอร์แมตซอร์สโค้ดของ Stripe ทั้งหมดในภาษา Ruby เมื่อปี 2024 รวม 62,213 ไฟล์ คิดเป็น 25 ล้านบรรทัดซึ่งน่าจะเป็นซอร์สโค้ด Ruby ที่ใหญ่ที่สุดในโลก แต่โค้ดกลับไม่มีมาตรฐานกลางในการจัดฟอร์แมตทำให้มีลายมือต่างกันไป
ก่อนหน้านี้ Stripe พยายามใช้ formatter มาก่อน โดยเลือก prettier-ruby แต่ไม่ประสบความสำเร็จเพราะทำงานช้าเกินไป บางไฟล์ที่ขนาดใหญ่มากๆ ถึงกับแครชไปเลย ขณะที่โปรแกรม rubocop ที่ใช้ lint ก็ไม่ได้ทำหน้าที่ formatter โดยตรง แถมมีกฎให้คอนฟิกจำนวนมาก ทำให้แต่ละคนคอนฟิกไม่ตรงกัน
ทีมงานตัดสินใจใช้ rubyfmt ที่พัฒนามาแล้วหลายปี โดยมีแนวทางชัดเจนว่าโปรแกรมต้องรันได้ภายใน 100ms แนวทางนี้ทำให้ต้องเขียนโปรแกรมใหม่ด้วย Rust แล้วลิงก์เข้ากับ C API ของ Ruby โดยตรง
ทีมงานเริ่มใช้ formatter โดยให้แต่ละไฟล์ประกาศก่อนว่าต้องการใช้ formatter แล้วค่อยๆ ขยายวงออกไปเรื่อยๆ และกำหนดวันเสาร์หนึ่งเพื่อปรับโค้ดทั้งหมดให้ฟอร์แมตด้วย rubyfmt รวมทั้งหมด 62,213 ไฟล์ แพตช์มีขนาดใหญ่มากเสียจน GitHub ไม่เรนเดอร์แพตช์ และแสดงจำนวนไฟล์ที่แก้ไขเป็น infinity
ผ่านมาสองปี Stripe พบว่าการบังคับ formatter เป็นมาตรฐานเดียวกันประหยัดเวลาทำงานไปได้ ไม่ต้องมานั่งคอมเมนต์โค้ดกันเรื่องฟอร์แมตอีกต่อไป
ที่มา - Stripe
on