Yazılım Tasarım Desenlerini kullanmayacaksam ne gibi sorunlarla karşılaşabilirim? Bana tasarıma standart nesne yönelimli teknikler kullanarak yaklaşmanın sorunlarını anlatır mısınız?
Yazılım Tasarım Desenlerini kullanmayacaksam ne gibi sorunlarla karşılaşabilirim? Bana tasarıma standart nesne yönelimli teknikler kullanarak yaklaşmanın sorunlarını anlatır mısınız?
Yanıtlar:
Konuyu kaçırıyorsun.
Tasarım Kalıpları, tıpkı dünyada yapısal kalıplar gibi, yazılım tasarımı yaparken de doğal olarak mevcuttur. Bir şeylerin adını bilmeseniz bile, sonunda belirli fiziksel yapıların belirli sorunlara uygun olduğunu göreceksiniz. Ahşap / metal çubukların / vb. Üçgen şeklinin çok kararlı bir yapı olduğunu ancak sadece bir uçakta olduğunu göreceksiniz. Kare tuğlaların yuvarlak olanlara göre bazı avantajları olduğunu göreceksiniz ...
Benzer şekilde, bazı yazılım yapıları bir şekilde benzersiz veya optimaldir. Sonunda onları bulacak ve isimlerini biliyor olursanız olun onları kullanacaksınız . Tasarım modellerinin özü budur - deneyimli programcıların zaten bildikleri ve kullandıkları bu yapıların adlarıdır . Programcılara çok daha düzgün ve özlü iletişim kurma yeteneği verir. Ayrıca programcıların kalıp kavramını daha bilinçli düşünmelerini sağlar.
Bu yüzden iki önemli noktaya değinmeye çalışıyorum:
Geçmişi hatırlayamayanlar, onu tekrarlamaya mahkumdur.
Tasarımınızın ortaya çıkardığı sorunlar dışında herhangi bir sorunla karşılaşmayacaksınız. Ve zamanla desenleri farkında olmadan kullanmaya başlayacaksınız, sadece kendiniz anlamaya zaman harcadınız. Kalıpları önceden bilmek, tasarımda fark edilmelerini kolaylaştırır ve birkaç kişi tarafından kanıtlandıkları büyük avantajı taşır.
Bugün geliştirilmekte olan her şey büyük ölçüde önceki bilgilere dayanmaktadır, onu görmezden gelmenin hiçbir anlamı yoktur. Yüzlerce yıl önce katedral inşa eden insanların karşılaştığı sorunları bilmeden bugün bir gökdelen inşa ettiğinizi düşünün.
Yazılım Tasarım Desenlerini kullanmayacaksam ne gibi sorunlarla karşılaşabilirim?
Herhangi bir yazılım yazamamanız gerekir.
Değişkenler bir tasarım modelidir.
Yöntemler bir tasarım modelidir.
Operatörler - toplama, çıkarma, vb. - bir tasarım modelidir.
İfadeler bir tasarım modelidir.
Değerler bir tasarım modelidir.
Referanslar bir tasarım modelidir.
İfadeler bir tasarım modelidir.
Sınıflar bir tasarım modelidir.
...
Programlamada her zaman yaptığınız her şey bir tasarım modelidir . Çoğunlukla örüntü sizin düşüncelerinizle o kadar iç içe ki, onu bir tasarım örüntüsü olarak düşünmeyi bıraktınız. "Tekton paterni" gibi öğrenmeniz gereken şeyler, kullandığınız herhangi bir dile henüz (henüz) pişmemiş olan kalıplardır.
Bana tasarıma standart nesne yönelimli teknikler kullanarak yaklaşmanın sorunlarını anlatır mısınız?
Hayır. Bu sorunun ne anlama geldiğini bilmiyorum. Tasarım desenleri olan onları kılan da - "standart nesne yönelimli teknikler" desen tasarım . Bir tasarım modeli, özellikle ( zorunlu olmasa da ) belirli bir problemi, özellikle nesne yönelimli bir dilde çözmek için standart bir tekniktir .
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- Bu (neredeyse) bir tasarım modelinin tanımıdır - dilin kendisinde bir sınırlamanın üstesinden gelmek için kullanılan, başkalarıyla iletişim kurmak kolay olan esnek / kolay yeniden kullanılabilir bir kod yapısı. Dilin bir parçası olduğunda, artık bir tasarım deseni değildir.
Bir tasarım deseninin noktasını anlamak, onu harf için kullanmaktan daha önemlidir. Bazı kalıplar, IMO, aptalca, en azından alışkın olduğum dil paradigmalarında. Tasarım kalıplarını körü körüne ve gerçekten anlamadan kullanan bir programcı olan IMO, şeyleri kendileri düşünmek isteyenlerden daha kötü bir programcıdır. Ancak fikirleri tanıyan ve daha sonra değerli olup olmadıklarına karar verebilecek biri muhtemelen ikisinden de daha güçlü bir programcı olacaktır.
Bununla birlikte, sinek ağırlığının ne olduğu hakkında hiçbir fikrim yok ve itiraf etmekten utanmıyorum. (çok yardımcı olan başka bir wikipedia girişi için yorumlara bakın)
Vikipedi'nin tasarım kalıplarına girişini öneriyorum. Çok özlü ve net bir şekilde yazılmıştır. Bir kişinin belirli bir tasarım deseni ile neden rahatsız olup olmayacağı hakkında bir fikir edinmek için çok yararlıdır. Şahsen en basit olanları en kullanışlı olanı bulma eğilimindeyim ve herhangi bir modelin belirli bir uygulamasını ihtiyaçlarıma göre değiştirmeyi iki kez düşünmüyorum.
Bunlar fikir, plan değil. Bazı dillerde hiç de iyi bir fikir değiller. Diğerlerinde, haklı olarak, bir dilin daha az karmaşıklık yoluyla daha iyi telafi edilebilecek tasarım zayıflıklarının üstesinden gelmek için bir ipucu olarak görülüyorlar. Ne olursa olsun, kendi tercih ettiğiniz çözümlere karar vermeden önce bunları incelemek ve üstesinden gelmeleri gereken zorlukları anlamaya çalışmak zarar vermez.
Ne tür sorunlarla karşılaşacaksınız? Zaten hepsini anlayan bir programlama dehası değilseniz fırsatları kaçırıp, problemlere ihtiyaç duyduğunuzdan daha fazla zaman harcayabilirsiniz. Popüler programlama fikirlerine eleştirel göz kulak olmak önemlidir, ancak insanların çözdüklerini düşündüklerinin ne olduğunu anlamak asla acıtmaz, çünkü bu sizin tercih ettiğiniz çözümlere / yaklaşımlarınıza daha fazla açıklık kazandıracaktır.
Karşılaşacağınız temel sorun , tekerleği yeniden keşfedeceğinizdir . Bunlara kalıp denir, çünkü sıklıkla ve tahmin edilebilir bir şekilde ortaya çıkarlar.
Tasarım desenlerini takip etseniz bile kötü bir tasarıma sahip olabilirsiniz. Tasarım desenleri doğaldır ve tasarımınızda bir miktar lezzet kullanırsınız. Herhangi bir paterni kullanmamak için çok uğraşmanız gerekecek. Tasarım kalıplarını kınamak için bir neden yok, daha önemli olan ihtiyaçlarınız için doğru kalıpları seçmek
Tasarım kalıplarını fark etmeden her zaman kullanıyorsunuz. Popüler dillerdeki birçok standart kütüphane tasarım desenleri göz önünde bulundurularak tasarlanmıştır. Java örneğiFileReader
Dekoratör tasarım deseni kullanılarak tasarlanan kütüphanesi buna . Şimdi kendi kodunuz hakkında konuşursanız, tasarım desenlerini kullanmak zorunda değilsiniz (çoğu durumda). Bir tasarım deseni, "sık karşılaşılan bir soruna yeniden kullanılabilir bir çözümdür" , yani daha temiz daha sürdürülebilir bir kod yazmanıza yardımcı olacaktır, bu nedenle spagetti koduyla bitirmekten ne kadar kaçınmak istediğiniz size bağlıdır.