Tasarım kalıplarını ihtiyaç duyulmadan uygulayarak karmaşıklığı zamanından önce uygulamak iyi bir uygulama değildir.
Ancak, SOLID ilkelerinin tümünü (hatta çoğunu) uygularsanız ve ortak tasarım desenleri kullanırsanız, tasarımınızı gerektiği kadar bakım ve esnek tutmak için özellikler ve gereksinimler eklendikçe veya değiştirildikçe bazı karmaşıklıklar ortaya koyacaksınız.
Ancak bu karmaşıklık bir kez tanıtıldığında ve şampiyon gibi çalıştığında ne zaman çıkardınız?
Misal. Bir müşteri için yazılmış bir başvurum var. Başlangıçta orada yaratıldığında çalışanlara yükseltmek için çeşitli yollar. Tüm süreci güzel ve temiz tutmak için strateji modelini ve fabrikayı kullandım. Zaman içinde, uygulama sahibi tarafından eklenen veya kaldırılan belirli yükseltme yöntemleri.
Zaman geçiyor ve yeni sahip devralıyor. Bu yeni sahibi sert burunlu, her şeyi basit tutar ve zam vermek için tek bir yolu vardır.
Strateji modelinin ihtiyaç duyduğu karmaşıklığa artık gerek yoktur. Ben şimdi olduğu gibi gereksinimleri bu kodlamak nerede ben bu ekstra karmaşıklığı tanıtmak olmaz (ama ben gerek ortaya çıkarsa az veya hiç çalışma ile bunu tanıtmak emin olun).
Şimdi strateji uygulamasını kaldırabilir miyim? Bu yeni sahibin yükseltmelerin nasıl verildiğini hiç değiştirmeyeceğini sanmıyorum. Ancak uygulamanın kendisi bunun olabileceğini gösterdi.
Elbette bu, yeni bir sahibin devraldığı ve birçok işlemi basitleştirdiği bir uygulamada sadece bir örnektir. Onlarca sınıfı, arabirimi ve fabrikayı kaldırabilir ve tüm uygulamayı çok daha basit hale getirebilirim. Mevcut uygulamanın gayet iyi çalıştığını ve sahibinin memnun olduğunu unutmayın (ve tartışılan karmaşıklık nedeniyle değişikliklerini çok hızlı bir şekilde uygulayabildiğim için şaşırdım ve daha mutlu oldum).
Bu şüphenin küçük bir kısmının, yeni sahibin beni artık kullanmayacağı büyük olasılıkla olduğunu itiraf ediyorum. Büyük bir gelir üreticisi olmadığı için başkasının bunu devralacağı umrumda değil.
Ama 2 (ilgili) şeyi önemsiyorum
Yeni bakıcı kodu anlamaya çalışırken biraz daha zor düşünmek zorunda kalacak biraz umurumda. Karmaşıklık karmaşıklıktır ve benden sonra gelen psikolojik manyayı kızdırmak istemiyorum.
Ama daha da fazlası, bir yarışmacının bu karmaşıklığı görmesinden ve saatlerimi işlere aktarmak için tasarım kalıpları uyguladığımı düşünmekten endişeleniyorum. Sonra diğer işime zarar vermek için bu söylenti yayıldı. (Bu sözü duydum.)
Yani...
Genel olarak daha önce ihtiyaç duyulan karmaşıklık işe yarıyor olsa da kaldırılmalı ve karmaşıklığa tarihsel olarak gösterilmiş bir ihtiyaç var, ancak gelecekte gerekli olacağına dair bir işaretiniz yok mu?
Yukarıdaki soru genel olarak "hayır" şeklinde yanıtlansa bile, projeyi bir rakibe (veya yabancıya) teslim ediyorsanız bu "ihtiyaç duyulmayan" karmaşıklığı ortadan kaldırmak akıllıca olur mu?