Bob Amca'nın Temiz Mimarlık İlkeleri adlı videodaki kavramları çok beğendim. Fakat bu modelin Özü'ndeki Soyut Fabrika ve Oluşturucu modellerinin bir kombinasyonu gibi olduğunu hissediyorum.
Yakınında bile değil.
Buna baktığınızda:
Bir nesne grafiğinin tasarımına bakıyorsunuz. Bu neyin ne olduğunu bilir. Bu hikayeden eksik olan, bu nesne grafiğinin nasıl oluştuğu. Üzgünüm ama burada bulamazsın. İnşaattan söz edilmiyor.
Tüm bunları soyut fabrikalar ve inşaatçılar olmadan inşa edebilirsiniz. Biliyorum çünkü ben yaptım . Onlardan kaçınmak için yola çıkmadım bile. Onları seviyorum. Sadece onlara ihtiyacım olmadı. Ben sadece referans geçmeyi kullandım. Bağımlılık Enjeksiyonu bunun için süslü bir terimdir.
Aslında, bu şemada gördüğünüz her şeyi ana olarak inşa edebilirim. Ardından, sadece her şeyi işaretlemeye başlamak için bir nesne üzerinde bir yöntem çağırın.
Şimdi başka şeylere sokabilmeniz için önce bazı şeyler var olmalı. Bunu burada araştırdım ve bu sevimli şemayı verdim:
Ve hepsini bile çıkmadan yapabilirsiniz main()
.
Usul inşaat kodunu bir yığınını güzel ısırık büyüklüğünde kavramsal parçalara bölmek istediğinizde inşaatçılar ve fabrikalar kullanmanızı öneririm. Ancak temiz mimaride ya da sizden talep eden diğer tercüman mimarilerinde hiçbir şey yoktur. Öyleyse buna bağlı kalmak istiyorsan, tamam main()
. Sadece lütfen, merhamet et .
Bob Martin tarafından “Temiz Mimari”, tüm mimariler için bir kural mıdır yoksa seçeneklerden yalnızca biri mi?
Clean Architecture'ı, insanları bir blog ve kitaba yönlendirmek için kullanılan bir terim olarak görüyorum. Bu blog ve kitabın, insanları eski bloglara ve eski kitaplara yönlendirmek için kullanılan eski isimlere sahip olan çok eski Mimarlar hakkında çok iyi açıklamaları var. Limanlar ve Adaptörler gibi özel olarak Soğan. Bunlardan hiçbiri sahip olduğunuz tek mimari seçenek değil.
Bob Amca'yı seviyorum çünkü harika bir konuşmacı ve yazar. Aksi takdirde sahip olamayacağım şeyleri düşündürüyor. Ama bunun sizi her şeyin yolunda gitmesi konusunda ısrar eden dini bir zihniyete dönüştürmesine izin verirseniz, güncelleme belgelerinin koduma en yakın şekilde girmenize en yakın olduğunu hemen anlayacaksınız.
Buzzword mimarileri, dünyayı değiştirirken devam etmesi gereken uzun ömürlü bir kodunuz olduğunda kullanışlıdır. İşte o zaman parlar. Eğer dünya kodla kıyaslandığında istikrarlıysa, sebepsiz yere bir şey yapmaktan hoşlanırsın.
Bir şey ne kadar harika görünürse görünsün, onu saçma yapabilecek bir bağlam vardır. Üzgünüm, bu da gümüş mermi değil.
Ancak videoda temiz mimarinin iş mantığı ve çerçeveler arasında net bir sınırın olması gerektiğini düşündüğünü düşünüyorum. Altyapılar (web, android, vb.) İş mantığına bağlanan eklentiler olmalıdır. Hatta videoda rayları bile alay ediyor.
Haklısın. O yapıyor. Bob Amca, çerçevelerin kütüphaneler gibi ele alınabileceğini düşünüyor. Ve yapabilirler. Ama bu kararın bile sana bir maliyeti var.
Bay Martin'in korumaya çalıştığı şey, genel amaçlı dilin hala genel olduğu bir alandır. Her yere bir çerçeve yayarken vazgeçersiniz. Bunu yaptığınızda, dilinizi etki alanına özgü dil denilen bir şeye dönüştürmek yolunda ilerliyorsunuz. HTML, alana özel bir dildir. İşini çok iyi yapıyor ama yapamayacağı başka işler var.
İhtiyaçlarınız çerçeve tarafından öngörüldüğü sürece, işler çok sorunsuz olacak. İhtiyaçlarınızı önceden tahmin etmeniz güzel. Seni işleri basit tutan bir kutuya koyuyor. Sadece bunu almak için neyi bıraktığınızı anlayın. Spring'i her yere yayarsanız, artık bir Java işi olarak reklamını yapamazsınız. Bu bir Java / Spring işi. Ruby ve Rails için de aynı şeyi söyleyebilirim ama Rails uzun zaman önce Ruby'nin öğle yemeğini yedi.