- เข้าร่วม
- 1 มิถุนายน 2011
- ข้อความ
- 16,457
- คะแนนปฏิกิริยา
- 0
- คะแนน
- 36
Stripe รัน rubyfmt จัดโค้ดทีเดียว 25 ล้านบรรทัด, GitHub ถึงกับแสดง file changed เป็น infinity
Body
Fable Tales และ Anna Mason ทีมงาน Stripe รายงานถึงการจัดฟอร์แมตซอร์สโค้ดของ Stripe ทั้งหมดในภาษา Ruby เมื่อปี 2024 รวม 62,213 ไฟล์ คิดเป็น 25 ล้านบรรทัดซึ่งน่าจะเป็นซอร์สโค้ด Ruby ที่ใหญ่ที่สุดในโลก แต่โค้ดกลับไม่มีมาตรฐานกลางในการจัดฟอร์แมตทำให้มีลายมือต่างกันไป
ก่อนหน้านี้ Stripe พยายามใช้ formatter มาก่อน โดยเลือก
ทีมงานตัดสินใจใช้
ทีมงานเริ่มใช้ formatter โดยให้แต่ละไฟล์ประกาศก่อนว่าต้องการใช้ formatter แล้วค่อยๆ ขยายวงออกไปเรื่อยๆ และกำหนดวันเสาร์หนึ่งเพื่อปรับโค้ดทั้งหมดให้ฟอร์แมตด้วย
ผ่านมาสองปี Stripe พบว่าการบังคับ formatter เป็นมาตรฐานเดียวกันประหยัดเวลาทำงานไปได้ ไม่ต้องมานั่งคอมเมนต์โค้ดกันเรื่องฟอร์แมตอีกต่อไป
ที่มา - Stripe
lew Tue, 05/05/2026 - 09:23
Continue reading...
Body
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
lew Tue, 05/05/2026 - 09:23
Continue reading...