Terkadang ketika kita memeriksa histori komit perangkat lunak, kita mungkin melihat bahwa ada beberapa komit yang benar-benar BESAR - mereka dapat mengubah 10 atau 20 file dengan ratusan baris kode sumber yang diubah (delta). Saya ingat bahwa ada istilah yang umum digunakan untuk komit BESAR seperti itu tetapi saya tidak dapat mengingat dengan tepat istilah itu. Ada yang bisa bantu saya? Apa istilah yang biasanya digunakan oleh pemrogram untuk merujuk pada komitmen BESAR dan raksasa seperti itu?
BTW, apakah melakukan banyak perubahan bersama-sama merupakan praktik yang baik?
UPDATE: terima kasih kepada kalian untuk diskusi yang menginspirasi! Tapi saya pikir "bom kode" adalah istilah yang saya cari.
cluster f...
Jawaban:
(1) Ben Collins-Sussman : "..." bom kode ". Yaitu, apa yang Anda lakukan ketika seseorang muncul di proyek sumber terbuka dengan fitur baru raksasa yang membutuhkan waktu berbulan-bulan untuk ditulis? Siapa yang punya waktu untuk meninjau ribuan baris kode? ... "
(2) Dan Fabulich : "Bom Kode, atau: Pemula dengan Ide Besar ... Bom kode adalah tambalan yang begitu besar sehingga tidak ada yang bisa memeriksanya."
(3) Google Summer of Code: Pedoman : "Berkomit lebih awal, komit sering ... Tolong jangan bekerja sepanjang hari dan kemudian mendorong semuanya keluar dalam satu bom kode tunggal . Sebagai gantinya, setiap komit harus mandiri hanya untuk satu tugas saja yang harus dirangkum dalam pesan log. "
(4) Jeff Atwood : "bom kode ... Aturan # 30: Jangan menjadi gelap ... ...
sumber
Kami mungkin menyebutnya komitmen buruk . :)
Praktek yang buruk
Dan ya, itu umumnya dianggap praktik buruk , karena memiliki efek negatif:
Kasur yang Dapat Diterima
Namun, Anda dapat memiliki kasus di mana komit besar dapat diterima . Contohnya:
Jadi, jika memungkinkan, lebih suka "pemogokan bedah" -jenis komitmen (dan tautkan ke ID tugas di pelacak masalah Anda!). Jika Anda memiliki alasan yang valid, silakan.
Terlepas dari itu, saya sebenarnya tidak tahu dan tidak berpikir saya pernah mendengar nama khusus untuk komit besar. Monster-commit? Berkomitmen gemuk?
Pembaruan: Jawaban David Cary menghubungkan ke aktor-aktor TI terkenal yang menggunakan istilah "bom kode" (yang paling penting, Collins-Sussman, pencipta asli Subversion ). Seperti itu (meskipun sejauh ini saya tidak bisa mengatakan saya sering mendengar).
sumber
Ya, itu bukan praktik yang baik untuk menahan perubahan untuk waktu yang lama, dan mengimplementasikan berbagai fitur dan perbaikan bug, dan kemudian mengkomitnya, yang merupakan salah satu cara komit besar bisa terjadi.
Cara lain ini bisa terjadi adalah jika refactoring mengubah tanda tangan dari fungsi yang banyak digunakan, dan kemudian semua itu harus diubah. Ini tidak selalu buruk, dan saya tidak ingin pengembang menahan diri dari membersihkan kode karena takut melewati ambang batas.
Jadi, ada lebih dari itu hanya dengan melihat jumlah file yang disentuh dalam komit.
sumber
Istilah yang saya dengar adalah "chunky check-in" . Dan saya bukan penggemar mereka. Saya suka komitmen yang lebih kecil yang memastikan tidak ada lagi yang rusak pada langkah wajar dalam suatu proyek. Komit besar umumnya penuh dengan masalah yang bergaung untuk beberapa saat ketika itu terjadi.
sumber
Saya menyebutnya "commit SVN biasa" atau "besok adalah hari rilis komitmen"
Seperti halnya saya mencintai SVN, saya hanya dimatikan oleh kenyataan bahwa saya tidak dapat melakukan komitmen lokal.
Sunting: mereka biasanya memiliki kata "barang" dan "bir" dalam pesan komit.
EDIT LAGI: Melakukan banyak perubahan, meskipun tidak selalu merupakan praktik yang buruk, harus sebisa mungkin dihindari. Saya merasa lebih mudah untuk meninjau revisi / komit yang singkat dan ringkas. (dipasangkan dengan pesan komit yang ditulis dengan baik, lihat hasil edit saya sebelumnya untuk contoh yang buruk)
sumber
"Gumpalan kode panas mengepul". :-)
sumber
sumber
Biasanya banyak orang cenderung membuat komitmen besar menggunakan VCS terpusat, terutama server memberlakukan kebijakan komitmen yang baik. Itu adalah komit harus melewati semua tes dan tes membutuhkan waktu lebih lama (lebih lama dari beberapa detik). Jadi pengembang tidak ingin menunggu terlalu lama untuk melakukan beberapa kali dan memecah perubahan menjadi beberapa komit kecil.
Dan pengembang yang hijau untuk VCS mungkin lupa memecah perubahan menjadi beberapa komit kecil. Mereka hanya ingat untuk berkomitmen ketika mereka merilis program ke tim QA. Lebih buruk lagi, untuk menghindari orang lain melihat kode kereta, mereka tidak melakukan sebelum berhasil melewati pengujian QA. Terakhir, mereka tidak menyadari bahwa mereka telah melakukan binary output, file sementara dan output linker, yang benar-benar menghasilkan komit "besar".
sumber