Saya ingin mencegah situasi di mana dua pengembang refactor kode yang sama secara bersamaan tanpa membicarakannya terlebih dahulu, mungkin menggunakan alat semacam, mungkin plug-in Eclipse. Bisakah kamu menolong?
Kami memiliki 4,5 juta baris kode, dan lebih dari 20 tim pengembang di empat benua.
Idealnya saya ingin yang kedua dari pengembang yang disebutkan sebelumnya memperhatikan bahwa orang lain sedang mengerjakan potongan kode yang sama dan berbicara dengan yang pertama sebelum memodifikasi apa pun.
Apakah Anda tahu solusinya?
refactoring
Roger CS Wernersson
sumber
sumber
Jawaban:
Banyak sistem kontrol sumber generasi ke-2 bekerja menggunakan "checkout" yang terhubung yang memberi tahu server bahwa Anda bermaksud memodifikasi file. Contohnya termasuk TFS, SourceGear Vault, dan banyak lainnya. Dengan cara ini, Anda secara teknis dapat memenuhi kebutuhan Anda. Seperti yang Adam Butler tunjukkan, jenis alat ini datang dengan masalah mereka sendiri (tanpa masuk ke perdebatan panjang - dukungan terbatas untuk pekerjaan offline, dan umumnya alur kerja pembangunan yang kontraproduktif).
Saya pasti akan menyarankan semacam pendekatan hierarkis untuk mengalokasikan pekerjaan refactoring. Pengembang dapat secara logis dikelompokkan ke dalam sub-tim, masing-masing bertanggung jawab untuk area spesifik dari kode. Bergantung pada bagaimana Anda ingin menyusun tim, masing-masing dapat memiliki peran "pemimpin" yang bertanggung jawab atas desain tingkat tinggi area tim. Struktur ini harus diketahui oleh pengembang, dan harus menyederhanakan komunikasi untuk refactoring. Saya yakin bahwa pendekatan ini tampaknya terlalu formal dan mundur untuk beberapa, tetapi saya pikir itu sangat disukai untuk memiliki 20+ pengembang menggunakan pendekatan "gratis untuk semua" untuk refactoring sistem yang besar. Beberapa refactor akan dilakukan pada level tinggi (mis. Bagaimana modul X berkomunikasi dengan modul Y), dalam hal ini Anda akan membutuhkan orang yang dapat melakukan panggilan pada tingkat yang sesuai. Tidak semua pengembang dalam tim harus membuat keputusan arsitektur, jadi hierarki hampir dipaksakan dalam hal apa pun, bahkan jika seseorang memilih untuk tidak mengetahuinya.
Jadi pada dasarnya, ada alat untuk memenuhi persyaratan dasar yang Anda ajukan, tetapi tidak ada alat yang akan menggantikan komunikasi yang tepat dan memiliki sejumlah kecil orang yang menggerakkan arsitektur umum proyek Anda.
sumber
sumber
Ada / ada sistem kontrol versi yang membuat kode checkout pengembang sebelum mereka dapat mengedit tetapi ini memiliki masalah sendiri. Praktik yang lebih baik adalah membuat pengembang sering berkomitmen dan memperbarui. Satu pengembang kemudian dapat menandai kelas sebagai didepresiasi dan berkomitmen kemudian jika pengembang lain memperbarui sebelum mereka memulai refactor mereka, mereka akan melihat maksudnya.
sumber
Teknologi tidak bisa menyelesaikan masalah sosial. Anda perlu membuat pengembang Anda berbicara satu sama lain dan mengoordinasikan pekerjaan mereka. Dengan 20 tim, beberapa struktur dan aturan akan sangat penting. Anda akan ingin mendukung mereka dengan solusi teknologi, tetapi orang-orang yang diutamakan.
sumber
Jika Anda pergi
notice that someone else is working on the same piece of code and talk to the first one before modifying anything
, sesuai apa yang Anda katakan, Anda memerlukan sistem kontrol versi (CVS / SVN / GIT). Saya tidak yakin, tetapi jika Anda ingin memasukkan itu juga, Anda akan memerlukan beberapa hal lanjut (semacam mekanisme pemicu / beberapa hal khusus mungkin).sumber
Pengembang mengunci file di kontrol sumber harus menyelesaikan masalah Anda dengan mudah, tapi kemudian saya pikir Anda mungkin memiliki masalah yang lebih besar.
4,5 Juta LOC's adalah kotak pasir besar untuk dimainkan sehingga dalam solusi yang dirancang dan dirancang dengan baik Anda seharusnya jarang mengalami situasi di mana beberapa tim pengembang saling menginjak kaki masing-masing. Fakta bahwa ini terjadi lebih dari kebetulan adalah menceritakan beberapa cacat desain potensial serius yang harus dilihat.
sumber
Beberapa hal:
sumber