Bence bu, projenin ne kadar büyük olacağına bağlı.
Bir uçta, 1 Mloc projeniz olduğunu varsayalım. Bu kadar büyük bir proje için, tek bir bireyin ilgili tüm alanlarda "uzman" olması olası değildir. Yani bu durumda, her ana bileşen için mevcut kod stilleri ile yapışır. Yeni geliştiriciler bir alan seçecek, öğrenecek ve farklı kod stillerine sahip olabilecek diğer birçok bileşeni görmeleri pek olası değil.
Proje nerede, çok küçükse olan bireyler tüm kod tabanını anlamanıza olma ihtimali, o zaman bununla bir baskın kod stili ve sopa almak istiyorum. Bu durumda, tüm projedeki tutarlılığın daha anlamlı olduğunu düşünüyorum çünkü yeni geliştiricilerin projenin tüm alanlarında çalışması muhtemeldir.
Orta ölçekli projeler bu kararı vermek belki de en zor olanıdır. Bu durumda, her bir yaklaşımın maliyetlerini tartmanız ve uzun vadede en az pahalı olacağını düşündüğünüze karar vermeniz gerekir. Zor olan nokta, orta ölçekli projelerin genellikle tam bir stil yeniden düzenlemenin oldukça pahalı göründüğü kadar büyümüş olmasıdır. Belirli kod stillerini birlikte gruplandırmak için bir şeyler düzenlenip düzenlenemeyeceğini görmek için kod ağacı yapısına ikinci bir göz atmak isteyebilirsiniz.
Her iki durumda da, nihai karar, bu paketi bir araya getiren ekiple birlikte olmalıdır.
Mantığımı yukarıdan kaydırabilecek bazı aykırı değerler:
Bir veya daha fazla modül iğrenç bir tarza sahipse, daha büyük bir projede bile bunu korumanın bir anlamı yoktur. Evet, stil özneldir, ancak siz ve proje katılımcılarınız gerçekten, belirli alanların akış şeklinden gerçekten hoşlanmıyorsanız, o zaman eski stili nükleer silahlara sokun ve daha iyi bir alan verin.
Tüm stiller birbirine oldukça yakınsa, "işte yeni yol" ilan etmek ve bunu tüm yeni kodlar ve önemli yeniden düzenlemeler için kullanmak kadar kolay olabilir. Bu, incelemeleri biraz acı yapabilir, ancak tecrübelerime göre çoğu halk bu yaklaşıma uyum sağlama konusunda oldukça yeteneklidir. Ayrıca eski kodun nerede olduğunu gösteren bir işaret de sağlar.
Bazen stil, dile eklenen yeni işlevlere göre kaydırılır. C ++ yıllar içinde birçok özellik aldı. Daha eski stili bu özelliklerden yararlanan daha yeni bir stile gerektiğinde yeniden düzenleme yapmak mantıklı olabilir.
Bazı kütüphaneler özellikle deyimsel bir yaklaşıma veya stile sahip olabilir. Eğer öyleyse, projenin geri kalanıyla çelişse bile o kütüphane için bu stile sadık kalacağım. Buradaki amaç frobnosticators
, diğer projeler üzerinde çalışan birinin projeniz üzerinde de çalışma olasılığını artırmaktır .
Bazı yorumlar zorunlu ve nesne yönelimli stilleri bir düşünce olarak belirtmiştir.
Belirli bir tarzda "ağır" olan modüller, modül orta büyüklükte veya daha büyükse muhtemelen bu şekilde kalmalıdır. Üç ana stil (emir, nesnel ve işlevsel) ile çalıştım ve ağır emir stillerini bir OO stiline yeniden yansıttım. Orta veya daha büyük bir kodla, yeniden düzenleme (istisnai olarak) zor olabilir. Yeniden düzenlemeye yardımcı olacak hiçbir takım desteğim olmadığı için deneyimlerim şaşkına döndü.
Çok zor bir şekilde şekillendirilmiş modüller ile bu modüllerin belirli gelişim nişleri için deyimsel olduğunu ve aykırı değerlerle yükselttiğim son noktaya kadar geri döndüğünü hayal ediyorum. Bu işlevsellik için bulacağınız herhangi bir modül böyle görünecek ve bu alanın uzmanlarının projenizde de kolayca çalışabilmesini istiyorsunuz. Ancak seçenekler varsa ve ekibiniz bu modülün stilini sevmiyorsa, seçenekleri araştırırım.
Aynı şekilde, OO ilkelerinin çok ileri götürüldüğü ve yanlış kullanıldığı ağır bir OO tarzı modülle çalıştım. Örnek olarak, arayüzler çoklu mirasın yerine kullanılmıştır. Tahmin edebileceğiniz gibi, bu kaba bir uygulamadır. Bu modülü yeniden düzenleme konusunda makul bir ilerleme kaydedebildim, ancak bunun yerine kullanmak için daha iyi paketler bulduğum için bu yaklaşımı terk ettim.