Masalah pemformatan kode. Bahkan lekukan penting . Dan konsistensi lebih penting daripada perbaikan kecil. Tetapi proyek biasanya tidak memiliki panduan gaya yang jelas, lengkap, dapat diverifikasi , dan ditegakkan sejak hari pertama, dan perbaikan besar dapat tiba kapan saja. Mungkin Anda menemukannya
SELECT id, name, address
FROM persons JOIN addresses ON persons.id = addresses.person_id;
bisa lebih baik ditulis sebagai / lebih baik ditulis daripada
SELECT persons.id,
persons.name,
addresses.address
FROM persons
JOIN addresses ON persons.id = addresses.person_id;
saat bekerja untuk menambahkan lebih banyak kolom ke kueri. Mungkin ini adalah yang paling kompleks dari keempat kueri dalam kode Anda, atau kueri sepele di antara ribuan. Tidak peduli betapa sulitnya transisi, Anda memutuskan itu layak. Tetapi bagaimana Anda melacak perubahan kode di seluruh perubahan pemformatan utama? Anda bisa menyerah dan mengatakan "ini adalah titik di mana kita mulai lagi", atau Anda bisa memformat ulang semua kueri di seluruh riwayat penyimpanan.
Jika Anda menggunakan sistem kontrol versi terdistribusi seperti Git, Anda dapat kembali ke komit pertama, dan memformat jalan dari sana ke kondisi saat ini. Tapi itu banyak pekerjaan, dan semua orang harus berhenti bekerja (atau bersiaplah untuk ibu dari semua penggabungan) saat sedang berlangsung. Apakah ada cara yang lebih baik untuk mengubah riwayat yang memberikan yang terbaik dari semua hasil:
- Gaya yang sama di semua komit
- Pekerjaan penggabungan minimal
?
Untuk memperjelas, ini bukan tentang praktik terbaik saat memulai proyek, tetapi apa yang harus dilakukan ketika refactoring besar telah dianggap sebagai Good Thing ™ tetapi Anda masih menginginkan riwayat yang dapat dilacak? Tidak pernah menulis ulang sejarah itu bagus jika itu satu-satunya cara untuk memastikan bahwa versi Anda selalu bekerja sama, tetapi bagaimana dengan manfaat pengembang dari menulis ulang bersih? Terutama jika Anda memiliki cara (tes, definisi sintaks atau biner yang sama setelah kompilasi) untuk memastikan bahwa versi yang ditulis ulang bekerja dengan cara yang sama persis seperti aslinya?