Saya pikir itu tergantung pada seberapa besar keseluruhan proyek nantinya.
Pada satu ekstrim, katakanlah Anda memiliki proyek 1 Mloc. Untuk proyek sebesar itu, tidak mungkin satu individu akan menjadi "ahli" di semua bidang yang terlibat. Jadi dalam hal ini, saya akan tetap dengan gaya kode yang ada untuk setiap komponen utama. Pengembang baru akan memilih area, mempelajarinya, dan sepertinya mereka tidak akan melihat banyak komponen lain yang mungkin memiliki gaya kode yang berbeda.
Jika proyek ini jauh lebih kecil, di mana ada kemungkinan individu memahami seluruh basis kode, maka saya akan memilih gaya kode yang dominan dan tetap menggunakannya. Dalam hal ini, saya pikir konsistensi di seluruh proyek lebih masuk akal karena pengembang baru akan cenderung bekerja di semua area proyek.
Proyek berukuran sedang mungkin yang paling sulit untuk membuat keputusan ini. Dalam hal ini, Anda harus mempertimbangkan biaya untuk setiap pendekatan dan memutuskan yang menurut Anda paling murah untuk jangka panjang. Tantangannya adalah bahwa proyek-proyek berukuran sedang biasanya hanya tumbuh cukup di mana refactoring gaya lengkap terlihat sangat mahal. Anda mungkin ingin melihat struktur pohon kode untuk melihat apakah hal-hal dapat diatur untuk mengelompokkan gaya kode tertentu bersama-sama.
Apa pun itu, keputusan akhir harus dipegang oleh tim yang Anda tuju yang menyusun paket ini.
Beberapa pencilan yang mungkin mengubah alasan saya dari atas:
Jika satu atau lebih modul memiliki gaya yang mengerikan, maka tidak ada gunanya mempertahankannya, bahkan pada proyek yang lebih besar. Ya, gaya itu subyektif, tetapi jika Anda dan rekan-rekan peserta proyek Anda benar-benar tidak menyukai cara daerah tertentu mengalir, maka gantikan gaya lama itu dan berikan yang lebih baik.
Jika semua gaya cukup dekat satu sama lain, mungkin akan lebih mudah untuk mendeklarasikan "inilah cara baru" dan menggunakannya untuk semua kode baru dan perbaikan yang signifikan. Ini dapat membuat ulasan sedikit menyakitkan, tetapi dalam pengalaman saya kebanyakan orang cukup mampu beradaptasi dengan pendekatan ini. Ini juga memberikan tanda tanda di mana kode lama berada.
Terkadang gaya digeser berdasarkan fungsionalitas baru yang ditambahkan ke bahasa. C ++ telah mengambil sejumlah fitur selama bertahun-tahun. Mungkin masuk akal untuk refactor sesuai kebutuhan gaya lama ke gaya baru yang memanfaatkan fitur-fitur tersebut.
Beberapa perpustakaan mungkin memiliki pendekatan atau gaya idiomatis. Jika demikian, saya akan tetap dengan gaya itu untuk perpustakaan itu bahkan jika itu mungkin bertentangan dengan sisa proyek. Maksudnya di sini adalah untuk meningkatkan peluang seseorang yang bekerja pada frobnosticators
proyek lain juga akan bekerja pada proyek Anda.
Beberapa komentar menyebutkan gaya imperatif dan berorientasi objek sebagai pertimbangan.
Modul yang "berat" dengan gaya tertentu mungkin harus tetap seperti itu jika modul berukuran sedang atau lebih besar. Saya telah bekerja dengan tiga gaya utama (imperatif, objektif, dan fungsional), dan saya telah refactored gaya imperatif berat menjadi gaya OO. Dengan jumlah kode sedang atau lebih besar, refactoring bisa (luar biasa) sulit. Pengalaman saya bingung karena saya tidak memiliki dukungan perkakas untuk membantu dalam refactoring.
Saya akan membayangkan ada korelasi yang tinggi antara modul yang ditata sangat imperatif dan modul-modul yang idiomatik untuk ceruk pengembangan tertentu, yang kembali ke titik terakhir saya dibesarkan dengan outlier. Jadi modul apa pun yang Anda temukan untuk fungsionalitas itu akan terlihat seperti itu, dan Anda ingin para pakar dari domain itu dengan mudah dapat bekerja pada proyek Anda juga. Tetapi jika ada opsi dan tim Anda tidak suka gaya modul itu, maka saya akan menyelidiki opsi.
Demikian juga, saya telah bekerja dengan modul gaya OO yang berat di mana prinsip-prinsip OO diambil terlalu jauh dan digunakan secara tidak benar. Sebagai contoh, interface digunakan sebagai pengganti multiple inheritance. Dan seperti yang Anda duga, itu adalah implementasi yang kasar. Saya dapat membuat kemajuan yang wajar dalam refactoring modul itu, tetapi saya akhirnya meninggalkan pendekatan itu karena saya menemukan paket yang lebih baik untuk digunakan sebagai gantinya.