Saya sedang mengerjakan proyek pribadi yang pada akhirnya akan menjadi open source. Kami memiliki beberapa anggota tim, cukup berbakat dengan teknologi untuk membangun aplikasi, tetapi bukan pengembang berdedikasi yang dapat menulis kode bersih / cantik dan yang paling penting dalam jangka panjang.
Saya telah memulai untuk memperbaiki basis kode, tetapi agak sulit karena seseorang dalam tim di negara lain yang saya tidak sering hubungi dapat memperbarui hal yang benar-benar terpisah ini.
Saya tahu satu solusi adalah berkomunikasi dengan cepat atau mengadopsi praktik PM yang lebih baik, tapi kami belum sebesar itu. Saya hanya ingin membersihkan kode dan menggabungkan dengan baik apa yang telah dia perbarui. Apakah menggunakan cabang merupakan rencana yang cocok? Penggabungan usaha terbaik? Sesuatu yang lain
sumber
Anda tidak pernah "tidak cukup besar untuk berkomunikasi". Jika jari Anda dapat melakukan pengetikan, bibir Anda juga dapat berbicara. Pada akhirnya peningkatan teknologi adalah komunikasi 85% dan teknis 15%. Hanya karena Anda lebih suka duduk di sana coding daripada melakukan percakapan yang sulit dengan seseorang ... tidak berarti itu ide yang baik. Komunikasi sebenarnya adalah bagian sulit dari apa yang Anda coba, tetapi jangan hanya menghindarinya.
sumber
Ya, cabang adalah solusi yang bagus untuk ini.
Saya akan menyarankan Anda mulai mengerjakan ini pada cabang dan memastikan itu berlaku bersih di atas arus Anda saat ini
HEAD
(yaitu, buatlah tes ulang dan penggabungan secara berkala untuk memastikan Anda dapat menerapkan perubahan Anda dengan mudah dan tes Anda masih lulus - - juga mencarigit rerere
bantuan darigit
ini). Kemudian setelah Anda selesai rebase dan gabungkan perubahan Anda ke dalamHEAD
.Semakin cepat Anda mulai mengerjakan ini semakin baik sejak mengubah arsitektur menjadi semakin banyak pekerjaan semakin dingin kode yang didapat. Juga, mungkin ada banyak contoh kode handcod yang tersebar di seluruh basis kode di mana mis. Fungsi pembantu baru dan shiner Anda mungkin telah membuat segalanya lebih sederhana.
sumber
Sudahkah Anda mempertimbangkan opsi "Jangan lakukan itu"?
Sementara melakukan pekerjaan ini di cabang terpisah mungkin merupakan pendekatan terbaik, Anda mempersiapkan diri untuk penggabungan besar-besaran yang menyakitkan.
Orang lain mungkin menambahkan banyak fungsi baru, mengubah fungsi yang ada dan mungkin menghapus beberapa fungsi.
Setelah dev utama bekerja sedikit melambat di beberapa titik di masa depan, maka Anda bisa berada dalam posisi yang jauh lebih mudah untuk melakukan refactor.
sumber
tl; dr - Kedengarannya sudah waktunya untuk naik ke liga besar. Menempatkan lipstik pada babi tidak membuatnya lebih cantik, kecuali Anda menyukai hal-hal seperti itu ...
Masalah orang
Masalah pertama adalah sinkronisasi komit. JIKA Anda memiliki banyak orang yang bekerja pada kode yang sama pada saat yang sama Anda hanya perlu satu aturan untuk mencegah masalah:
Ketika datang ke DVCS, sulit untuk membuat perubahan ke cabang jauh (yaitu repositori utama) dan sangat mudah untuk membuat perubahan ke lokal. Setiap orang bertanggung jawab untuk membuat penambahan kode mereka sendiri sesuai dengan keseluruhan yang lebih besar tanpa masalah. Kecuali 2 orang yang berkomitmen pada saat yang bersamaan, Anda seharusnya tidak mengalaminya. Akses komit ke master asal / jarak jauh harus dibatasi hanya untuk beberapa pengembang dan mereka harus menarik perubahan dari pengembang lain melalui cabang pelacakan jarak jauh.
Masalah kode
Bagaimana Anda tahu bahwa perubahan yang Anda lakukan tidak merusak kode?
Jawaban sederhana ... Tulis tes untuk membuktikan tidak. Jika Anda mengabaikan aliran pemikiran TDD (Test Driven Design), inti dari tes ini adalah untuk menambahkan tingkat verifikasi yang memungkinkan Anda untuk mengubah kode tanpa merusaknya.
Selain itu, tes penuh harus dijalankan sebelum Anda mendorong ke master asal / jauh.
Pertahankan komitmen Anda sekecil dan seringkas mungkin. Dengan begitu, jika Anda perlu mundur perubahan yang merusak sesuatu di kemudian hari, Anda akan menghemat dari keharusan mengimplementasikan kembali bagian-bagian yang tidak melanggar kode.
Anda mungkin perlu melakukan restrukturisasi organisasi terlebih dahulu
Jika solusi di atas tidak mudah diterapkan, mungkin ada beberapa masalah dengan struktur pengembangan yang perlu ditangani terlebih dahulu.
Pemilik proyek harus menjadi penjaga gerbang. Jika ada masalah penyelarasan komit, mungkin ada terlalu banyak orang dengan akses komit. Bahkan pada proyek besar seperti kernel Linux, hanya segelintir pengembang yang melakukan akses ke repositori master asli / jauh. Sebenarnya ada beberapa level repositori untuk mengelola komit. Alih-alih model komit lapisan tunggal di mana semua orang mendorong perubahan mereka ke asal, model hierarkis memiliki penjaga gerbang yang menarik perubahan dan memverifikasi kualitas mereka sebelum dimasukkan ke dalam proyek. Model komit hierarkis dapat berskala jauh lebih besar dan lebih efektif daripada model lapisan tunggal tanpa mengorbankan kualitas.
Untuk para pengembang yang tidak mendapatkan akses komit, mereka harus belajar membuat cabang pelacakan jarak jauh mereka sendiri (git dan gitorious bagus untuk ini) sehingga para pengembang yang melakukan telah melakukan akses dapat dengan mudah menarik / mengintegrasikan cabang ke asal. Jika perubahannya kecil, tambalan akan bekerja juga.
Kemampuan untuk melakukan perubahan sebelum melakukan penggabungan / rebase mengasumsikan bahwa Anda tidak berkembang di cabang master lokal Anda. Cara mudah untuk menangani ini adalah dengan melakukan tarikan awal sebelum Anda mulai kode, lalu lakukan semua pekerjaan Anda di cabang itu. Cara yang sulit adalah menaburkannya tepat sebelum menggabungkan dan memutar kembali master.
Tentukan gaya pengkodean untuk keseluruhan proyek dan buat devs mengikutinya. Para dev yang berkontribusi harus menulis kode yang sesuai dengan standar / norma proyek untuk meminimalkan pembersihan. Gaya pengkodean bisa menjadi penghalang ego besar dalam proyek terbuka. Jika tidak ada standar yang ditetapkan, semua orang akan membuat kode dengan gaya pilihan mereka sendiri dan basis kode akan menjadi sangat jelek sangat cepat.
Mitos "The Mythical Man Month"
Percaya atau tidak, proyek open source yang lebih besar / lebih sukses tidak berjalan seperti demokrasi. Mereka dijalankan sebagai hierarki. Menyatakan bahwa proyek tidak dapat tumbuh secara efektif di luar 8-10 pengembang adalah naif. Jika itu benar maka mega proyek seperti Linux Kernel tidak akan ada. Masalah yang lebih dalam adalah bahwa memberikan akses kepada semua orang hanya membuat komunikasi yang efektif terlalu sulit untuk ditangani.
Masalah bulan pria mitos sebenarnya bisa diatasi. Anda hanya perlu menjalankan proyek Anda seperti militer. Ada banyak tingkatan dalam hierarki karena sudah menjadi rahasia umum bahwa individu hanya benar-benar efektif dalam mengelola komunikasi dengan segelintir orang. Selama tidak ada satu orang pun yang bertanggung jawab untuk mengelola pekerjaan lebih dari 5-7 orang, sistem tersebut dapat menskala tanpa batas.
Mungkin membatasi pengembang terbaik / berpengalaman untuk melakukan lebih banyak integrasi dan desain / perencanaan tingkat yang lebih tinggi, tetapi itu bukan hal yang buruk. Bagian dari peningkatan adalah membuat langkah untuk memutuskan bahwa proyek tersebut membutuhkan rencana jangka panjang. Orang-orang di tingkat tertinggi yang memiliki investasi terbesar (waktu juga merupakan sumber daya) dalam proyek di masa depan harus dituntut untuk membuat keputusan besar.
Sangat menyenangkan untuk mendengar tentang proyek open source melalui rasa sakit yang tumbuh. Selamat dan semoga berhasil.
sumber
Dalam pengalaman saya bersih / cantik adalah musuh yang bisa dipelihara. Kode cantik sering:
Di sisi lain, kode yang dapat dipelihara:
sumber