Üst düzey bir geliştiricinin OOP tasarım modellerinin ne olduğunu bilmesini beklemek makul mudur? [kapalı]


26

Üst düzey bir gelişim pozisyonu için iş görüşmeleri için sorular hazırlıyorum. İş, nesne yönelimli tasarım içerecektir ve mevcut yazılım tasarım kalıplarını kullanmaktadır, bu yüzden adaylardan, bildikleri, kullandıkları, onları nasıl kullandıklarını, neden kullandıklarını birkaç tasarım modeli açıklamalarını rica ediyorum. onları ve benzeri kullandım. Ancak, önceki röportajlarda, üst düzey geliştiricilere tasarım kalıpları hakkında en az 5-10 yıl deneyime sahip olduğumu sorduğumda, neredeyse hiçbiri bunları duymamıştı. Sanırım yirmi geliştiriciden ikisinin tek bir tasarım modelini adlandırabileceğini düşünüyorum (sırasıyla Singleton ve MVC).

Öyleyse sorum şu: bu soruları sormak mantıklı mı? Yoksa yeni işe alımların zaten onları tanımasını bekleyemeyeceğiniz bu kadar karanlık bir konu mu?

Üst düzey bir geliştiricinin tasarım kalıpları konusunda önceden deneyime sahip olması gerekir mi, yoksa tasarım kalıplarının eğitim sırasında her iyi geliştiricinin bunları alabileceği kadar basit bir konu olduğunu mu söylersiniz? Öyleyse, tasarım yeteneklerini ölçmek için hangi soruları sorarsınız?

Ekle şimdiye kadar cevapları okuduktan sonra bir kaç açıklamalar vermelidir:

  • İş, OOP / OOD konusunda deneyimli bir .NET geliştiricisi içindir.
  • Varolan kod, birçok yerde IParameterGraphVisitorve benzeri sınıf adlarını kullanırIStorageFactory
  • İnsanlara, tasarımlarını açıklayacak kelime bilgisine sahip değillerse, yarattıkları OO tasarımları hakkındaki geçmiş deneyimlerini nasıl soruyorsunuz? Yapmak istediğim şey bu ve bulabildiğim tek şey "lütfen son projenizin tasarım / nesne hiyerarşisini beyaz tahtaya çizin".

27
Desenler geçici bir yapıdır; yani, iyi bir tasarımla ortaya çıkıyorlar. Onlar "kullanılmıyor" değil. Adın "kalıp" olmasının ve "kısıtlama" veya "gereklilik" değil bir nedeni vardır. Peki, OO tasarım tecrübesi olan birini mi yoksa tasarım deseni tecrübesi olan birini mi istiyorsunuz? Birincisi, buzzwords'ten daha fazlasını bilme olasılığı daha yüksektir.
Michael K

6
@Michael: Kabul ediyorum. İsimleri bilmek ve deseni kullanabilmek arasında bir fark var. OO'da büyüdüm, fakat benden bazı kalıpları adlandırmamı ve tanımlamamı isterseniz iyi olmaz. Hangi endüstrinin buna karar vermeye karar verdiğini bilmiyorum ama bahse girerim listelenmesini beklediğiniz kalıpların çoğunu uyguladım.
unholysampler

15
@Michael: Ben her zaman tasarım desenlerini bir iletişim yardımı olarak gördüm. "Bu bir ağaç ziyaretçisidir" demek yerine "bu bir ağaç ziyaretçisi" demek, bu bir ağaca yürüyecek ve bu arabirimden bir yöntem çağıracak bir fonksiyona geçirilecek olan soyut bir arabirimdir. asıl işi yapar ". Ancak, bir röportajda tasarım becerilerini ölçmenin daha iyi yollarını biliyorsanız, lütfen soruyu cevaplayın! Ben de onu arıyorum.
nikie

3
Belki de daha iyi bir yaklaşım, onlara belirli bir problemi nasıl çözeceklerini sormak olacaktır. Birincisi, tüm tasarım kalıplarının isimlerini hatırlamıyorum ama onları nasıl uygulayacağımı ve kullanacağımı biliyorum. @Michael'in dediği gibi, buzzwords'leri deneyimlemek ve bilmek iki farklı şeydir.
Tyanna

4
Tasarım kalıplarını iyi bilmek aslında olumsuz olabilir. Bazı mimarlık astronotları yalnızca tasarım modellerinden bahsedecek ve anlamlı olsa da olmasa da bunları güçlü bir şekilde uygulayacaklar.
William Pietri

Yanıtlar:


67

Şansı olduklarını yapmak onları biliyorum. Sadece onları 'tasarım desenleri' olarak tanımayabilirler; yani, bu tür şeyler için akademik terminolojiyi tanımayabilirler. Devlet makinesi olarak gördüğünüz şey, daha eski, daha deneyimli bir programcının sorununa sağduyulu bir yaklaşım olabilir. Örneğin 'tasarım modellerine' hiç dikkat etmedim, örneğin, bir Devlet Makinesinin ne olduğunu öğrendiğimde, gülmek zorunda kaldım, çünkü bunu yıllardır yapıyordum. Benim böyle bir akademik olduğumu kim bilebilirdi? Her zaman sadece 'tasarım deseni' değil, temel kodlama becerisi olarak düşündüm.

Mesele, deneyimli geliştiricilerinizin şeyler için ders kitabı terimlerini bildiğini varsaymak değildir; bunun yerine, onlara sınıfları nasıl yapılandıracaklarını veya bir göreve nasıl yaklaşacaklarını sorun.


2
+1 Bu yapıları bir süredir Dörtlü Çete ortaya çıkmadan kullandım, bu yüzden verilen isimleri hatırlamakta her zaman sorun yaşadım.
dietbuddha

10
Desen literatürü, bence, bu tür şeyler hakkında oldukça açık - kalıpların tasarımın yerini alması amaçlanmadı, tasarım hakkında iletişim kurmaya yardımcı olmaları amaçlandı. (Tasarım hakkında iletişim kurmaya yardım etmenin de tasarımın kendisine yardımcı olduğunu söyleyebilirim, ama sanırım bu farklı bir nokta.)
Aidan Cully

5
+1. Bu bana herzaman olur. Bir süre önce, neden bu kadar popüler göründüğünü öğrenmek için "Bağımlılık Enjeksiyonu" konulu wiki makalesini okudum, sadece bunun yıllardır kullandığım bir teknik olduğunu bulmak için okudum, ancak bir isim vermedim. "Devlet makinesi" ile aynı.
whatsisname, 28.03

4
O zaman kıdemli bir geliştiricinin sahada neler olup bittiğini takip etmesi ve yaygın olarak kullanılan terminolojiyi benimsemesi makul bir beklenti değil mi? Desenler şimdiye kadar 15 yıldan beri var, bu yüzden artık onları "yeni" olarak bile
söyleyemiyorsunuz

2
Tasarım kalıplarının amacı, yazılım geliştiricilerin, tekrar eden sorunlara yönelik çözümler hakkında birbirleriyle konuşmaları için ortak bir dil sağlamaktı. Tasarım desenlerini öğrenmedeki nokta budur. IMO, son 17 yıldır OO Yazılımının geliştirilmesinde ön planda olan bir şeyi öğrenmeye zahmet etmemeleri için mesleğe bağlılık eksikliği olduğunu göstermektedir. Bazı temel kalıpları adlandıramayan ve anlayamayan biri hakkında kesinlikle çekincelerim var. İsimlerini bilmedikleri için insanların konuşmalarını anlamadıklarını umursamadılar mı?
Dunk

25

Beklentiniz, kıdemli bir OO geliştiricisi için oldukça makul. Kendisini çağıran herhangi biri, Tasarım Desenlerini bilmeden, sadece tecrübenin geçen yıllar tarafından otomatik olarak getirilmediğini kanıtlar :-( Sahada yıllarca hatta yıllarca, tasarım hakkında hiç bir şey duymadan geçiren geliştiriciler olduğundan emin olun. kalıplar - sadece yeni fikirleri öğrenmek, kendilerini geliştirmek ve en iyi uygulamaları benimsemekle ilgilenmediklerini gösterir.

Üst düzey bir geliştiricinin tasarım kalıpları konusunda önceden deneyime sahip olması gerekir mi, yoksa tasarım kalıplarının eğitim sırasında her iyi geliştiricinin bunları alabileceği kadar basit bir konu olduğunu mu söylersiniz?

IMO deneyimi çok önemli. Teorik olarak, iyi bir geliştirici bir Kitapta Tasarım Kalıpları'nı ve hatta Wikipedia'yı okuyabilir ve temel kavramı 15 dakika içinde anlayabilir. Ancak, kavramları doğru bir şekilde uygulamak zor kazanılmış deneyimler gerektirir. Desenler ile canlandırmak kolaydır, onları mümkün olan her kod parçasına sıkıştırmaya çalışıyorum. Ayrıca “kalıplar gümüş mermi değildir, sadece işe yarayabilecek en basit şeyi kullanın” diyerek onları çıkarmak kolaydır. İki uç nokta arasındaki orta zemini , gerçek problemleri çözmek için kalıpların ne zaman ve nasıl kullanılacağını öğrenerek ve bunları kullanmadıklarında, yıllarca tecrübe alır .

tasarım yeteneklerini ölçmek yerine hangi soruları sorarsınız?

Yukarıdakilerle uyumlu olarak, bu soruları yalnızca listenize ekleyeceğim:

  • Tasarım desenlerinin sakıncaları nelerdir (genel olarak ve açıkça bahsettiğinlerin)?
  • Ne zaman değil bunları kullanmak ve neden?

Güncelleştirme

@GrandmasterB, bazı geliştiricilerin adlarını bilmeden belirli tasarım desenlerini kullanabileceği konusunda iyi bir noktaya sahiptir. Bir anlamda, bunun bir terminoloji / iletişim sorusu olduğu konusunda haklı. Bununla birlikte, madalyonun diğer tarafı, aslında bir terminoloji / iletişim sorusudur :-) Bu, Tasarım Desenlerinin temel faydalarından biri, geliştiricilere iletişimi son derece geliştiren ortak bir kelime vermektir . (Temel fikri açıklamaya çalışın Adaptörü , Yani ancak yetenekli ve bilgili bir aday olabilir vd! "Sarıcı" kelimesini kendisi kullanmadan, ya da eş) yaygın olarak kabul terminolojiyi bilmeden (lar) o bir iletişim sorunu tanıtacak Takımında


2
Bunun ne kadar genellikle doğru bilmiyorum, ama aynı zamanda tasarım kalıpları kullanarak söylersi tanıtmak iletişim sorunları. Örneğin, ne zaman yapıyoruz şeydir benzer tanınmış desenine, ama tam olarak bunun gibi, daha sonra mevcut desen bilgisi yerel farklılıkları gizleyebilir değil. Veya ekibinizdeki geliştiriciler modeli tam olarak anlamadığında, kalıp adını kendine özgü bir şekilde kullanabilirler.
Aidan Cully,

1
@Aidan, orada iyi bir nokta, bana da olsa bu edilmektedir kötüye desenleri. Bu, deneyim ve uygulamanın vazgeçilmez olduğu bir başka yoldur, yani aynı modelin varyantları ile iki farklı model arasında farklılaşma.
Péter Török

1
+1'de, kendilerini kıdemli bir .NET dev olarak adlandıran herkes, en az birkaç açık kalıp adını ve kullanımlarını adlandırabilmelidir. Başka bir şey değilse, iletişim ve araç kutusu meselesi.
techphoria414

3 kez okudum ve yine de ilk paragrafın alaycılık olup olmadığını hala söyleyemem
briddums

@briddums, alaycı olduğunu düşündüren ne?
Péter Török

10

Bir üst düzey geliştirici? Kesinlikle. Bir genç olmalı. 15 yaşındayım, konuyla ilgili örgün bir eğitimim yok ve hatta onları anlıyorum. Onları tanımalarını beklemek sadece mantıklı değil, eğer bilmeseydi kabul edilemez olurdu. Büyük olasılıkla yaptığı nesne yönelimli programlama hakkında bir şeyler bildiklerini varsayarsak.


14
Adil olmak. OO, yaşamınız boyunca sadece baskın yöntemlerden biri haline geldi. Java önce kendi derecelerini aldı insanın vardır üniversitede kullanılan dil. OO dünyasında yaşamayan birçok insan var.
unholysampler

2
@ unholysampler: elbette, ama bunun hakkında konuşulmakta olan bir OOP pozisyonu olduğunu düşünüyorum
Anto

1
@unholysampler: Ben uni de başka bir şey Java görmeye dayanamıyorum .. ben o zaman yaşamış dilek <_ <
dürtmek

10

Bir röportajda, adayın işi yapması için bilmesi gerekenlerin ne olduğunu sormalısınız.

Desenlerin isimlerini Dörtlü Çetede olduğu gibi bilmek zorunda kalırlarsa, bu geçerli bir gerekliliktir.

Öte yandan, program mimarisinin uygun çalışma bilgisini göstermelerini istiyorsanız, onlara daha iyi bir sorun olduğunu ve kodun nasıl yapılandırılacağını sorduğunuzu düşünüyorum. Size uygun kalıp çözümünü verirlerse, kullanılan isme bakılmaksızın, bildiklerini ispat edersiniz.

Ne zaman Kıdemli pozisyonları için görüşürsem, Sorular ve Cevaplardan daha "pratik" olma eğilimindedir. Programlamada açık bir beceri ve rahatlık gösterisi istiyorum. Ayrıca CS kavramlarında, kapsülleme, algoritmalar, birleştirme / uyum, vb. Kavramların nasıl uygulanacağına dair daha genel beceriler anlamına gelen sağlam bir temel istiyorum. Birden çok dilde ve paradigmalarda tecrübe ve tanıdıklık.


4

Uzmanlık alanlarına bağlıdır. Gömülü bir C geliştiricisinin tasarım kalıpları hakkında çok şey bilmesini beklemiyorum. Bir Java veya .NET geliştiricisinden bahsediyorsak, tasarım desenlerine ve özellikle onlarla nasıl fazla karşılaşılmayacaklarına aşina olmalılar.


2
Tasarım bildiri ile fazla
götürülmediği

İyi bir nokta. Soruya bir açıklama eklendi. En azından OO programlama dilinde proje deneyimi olan .NET geliştiricisi içindir.
nikie

4

OOP'ta kıdem aradığınızı varsayarsak cevap kesinlikle evet. Tasarım kalıpları, OOP dilinin sözlüğüdür.

Ayrıca, bugünlerde 10 yıllık deneyime sahip iyi bir OOP programcısının, standart API'ler, kütüphaneler ve geliştirme çerçevelerinde yaygın olarak benimsenen tasarım kalıpları olan bir tasarım modelini adlandıramaması makul değildir.

Görüşmeler sırasında bu soruyu sormak yıllar oldu ve adayın konuyla ilgili tatmin edici cevaplar vermediği bir gösterici.


3

Evet, ancak insanlardan duydukları tasarım kalıplarını numaralandırmasını istemekten çok tasarım soruları sorarak onların anlayışlarını ortaya çıkarmalısınız . PoEAA, GoF ve hatta bazı fonksiyonel programlama kalıplarında açıklanan kalıplarla oldukça rahatım ve hala bazı kalıpları adlandırmamı isteyerek sorun çözme yaklaşımım hakkında daha fazla şey öğrenemeyeceğinizi düşünüyorum.

"Bana bir metin editörü tasarla" gibi bir soru verildiğinde, "Resimler gibi gömülü nesneleri nasıl destekleyeceksiniz? Kalın ve italik? Geri Al?" Muhtemelen sonunda komut düzenini, bileşik düzeni, hatıra düzenini ve hatta birkaçını kısa bir konuşmayla tanımak için yeterince işitirsiniz.

Tasarım kalıpları keşfedildi ve sonra tanımlandı, böylece tasarım kararlarını iletmek için ortak bir dile sahip olacağız.

Maalesef, bir tasarım modelinin her kullanımının açıklanması ve haklı gösterilmesi gereken bir durum için çalıştım, durum tespiti nedeniyle değil, sadece onları bilmediği için. Bu eğlenceli değil. Ancak, çoğu ciddi geliştirici, kazayla veya tasarımla, başka bir şey olmasa da, en sık kullanılan OO kalıplarının adlarını öğrendi ve çoğu kurumsal uygulama geliştiricisinin tuzlarına değer veren en az PoEAA kalıpları hakkında bir şeyler biliyor.


3

Makul. Kesinlikle. Gerekli. Yok hayır

Potansiyel adaylara tasarım kalıplarını bilip bilmediklerini soruyorum. Bir bütün olarak tartılması gereken birkaç kriterden sadece biri. Toplam resmi göz ardı etmeyin.

Evet, pek çok geliştirici bilmeden bazı tasarım kalıplarını kullanıyor, şüphesiz.

Bu soruyu sormamın nedeni bu değil.

Başka bir geliştiriciyle hızlı ve etkili bir şekilde iletişim kurabileceğimi bilmek önemlidir. Bir devlet makinesini açıklayan beyaz tahtada 20 dakika harcamak istemiyorum, "daha önce kullandıklarını, ancak ne diyeceklerini asla bilemediklerini" bulmak için. Bu verimli değil.

Ayrıca refactoring işlemine de yardımcı olurlar. Kod aracılığıyla göz atmak, bir fabrika modelinin bir şekilde gelişigüzel uygulanmasına neden olabilir, ancak GoF fabrika modeli, zaman testine dayandı. Bu onun yüzden fabrika desen, değil HENÜZ BİR fp (tekerleği yeniden tercih edilmez, yazılıma Joel bunu yaparken dezavantajları üzerinde bol vardır).

Tasarım desenlerinin önemini kullanan ve tanıyan bir ekip iletişimi ve üretkenliği arttırır. Ekibiniz, bir birim olarak, dp'ler kullanmıyorsa, alaka düzeylerini kaybederler.


2

Kendi tecrübelerime dayanarak, bir süredir tasarım patikalarını görmezden geldim. Var olduklarını biliyordum, onlar hakkında asla okumam. Sonunda mermiyi ısırdığımda, baştan beri tasarım desenini kullandığımı fark ettim ve fark etmedim ya da tasarım özümlerimin ortak bir adı olduğunu bilmiyordum.

Belirli bir tasarım modelinin çözüme iyi uyduğu ve geliştiricinin kalıba benzer bir şeyle geldiğini gördüğüm bir takım sorunlar ortaya koyma konusunda daha meyilli olurdum. Eğer yaparlarsa, harika. Belirli bir kalıbı çözmek için uygun olmadığında bir kalıba bir çözüm uydurmaya çalışan tasarım kalıbı bilgisine sahip birçok geliştiriciyi gördüğümden habersiz tasarım kalıplarını kullanan bir geliştiriciyi işe almaya daha meyilli olabilirim. iyi sorun.


2

Bence daha iyi bir soru olacaktır: Bir modelin adı ve modelin tanımı, örneğin Dörtlü Çeteden Bir Fabrika Deseni verildiğinde, adayın modelin olacağı bir senaryo ortaya koymalıdır. makul bir yaklaşım.


1

5-10 yıllık deneyime sahip geliştiriciler var ve üst düzey geliştiriciler var. Onlar aynı şey değil. Evet, üst düzeyde işe alım yapıyorsanız ve insanların tasarım modellerini bilmelerini ve kullanmalarını bekliyorsanız, onlara aşina olmayan kıdemli bir kişiyi işe almazdım. Bu, sola katılmadığını anlamayan bir veritabanı uzmanı işe almak gibi olurdu. Gerçek bir üst düzey geliştirici için oldukça basit bir şey. Muhtemelen küçük bir insanı işe alırdım.


1

Evet, aslında bu terime aşina olmalı ve hatta birkaç kalıptan söz edebilmeliler - ama teorik bilgiyi deneyimle karıştırmama hatası yapmayın.

Bir röportajdan önce tasarım desenlerini tazeleyecek ve kısa bir açıklama ile onları çınlatabilecek birçok insan var - ama bu sadece teori. Ne zaman ne zaman kullanılacağını veya resmi bir örüntüden habersiz sorunu çözebilecek gerçek bir üst düzey geliştiricidir.

Kontrol etmenin en iyi yolu, önünüzde bir şey tasarlamalarına ve araştırma soruları sormalarına izin vermektir. Kıdemli bir geliştirici, soyutlama düzeyinde doğal olarak düşünebilen bir kişidir. Bunlar tasarım modellerini "yaratan" insanlar.

Bir hokkabazdan hokkabazlık istemelerini istemeden bir hokkabaz kiralamaktan bahseden sınıf Peopleware gibi - sadece yapabileceklerinin çok fazla bir şey ifade etmediğini söyledikleri için ... deneyin.


Örnek bir problem verebilir misin? Bulabildiğim tüm tasarım örnekleri ilginç bir tasarım gerekmeyecek kadar basit ya da bir çözümün neden diğerinden daha iyi olduğunu görmenin zor olduğunu ya da bir röportajda çözülemeyecek kadar karmaşık olduklarını yorumladı.
nikie

Ne olduğu hiç önemli değil, "Bana bozuk para atma oyunu tasarla" kadar basit bir şey olabilir. Ne yaptıklarını görmek için bekleyin. O zaman neyle ilgilendiğinizi araştırmak için bir gereksinim ekleyin, örneğin: Bunu yapmak için bunu nasıl değiştirebilirsiniz? taşınabilir | hizmet olarak kullanılır | farklı UI'ler için kullanılabilir | İnternette koş ... vb
Stephen Bailey

0

Daha önce de belirtildiği gibi, buzzwords'leri kalpten hatırlamıyorlarsa, bunun doğru olduğuna inanıyorum. Ancak bu üst düzey bir konum olduğundan, en kötü çözümleri kullanmak yerine problemi en iyi şekilde çözmek için bir model ne zaman uygulayacağını bilmeleri gerekir. Böylece, onlara bir kalıp kullanarak çözülmesi gereken bir problem verin (örneğin, sınıfını zorlamadan bir nesneyi nasıl oluşturacağınız, bir nesneyin kendi uygulaması hakkında detaylara sahip olmadan nasıl erişeceğinizi vb. ona saldıracaklar.


0

Kesinlikle kalıpları bilmeleri gerekir, ancak illa da şifreleri değil.

Örneğin MVC, PAC, 3 katmanlı gibi çok benzer alternatiflere sahiptir. Birkaç yıl önce MVC için bir başka popüler kelime "Model 2" idi. Aslında, bu kalıbı mükemmel bilen, ancak şu anki terimin MVC olduğunu bilmiyordu.


0

Çok basit: Eğer kullanıyorsanız o zaman adaylarınıza sormanız gerekir. Eğer örüntüleri biliyorlarsa, birkaç artı puan eklemelidir; fakat bilmemek, özellikle de iyi OOD becerileri gösterirlerse, mutlaka onları engellememelidir. Bakım projelerinde yer alan geliştiricilerin, tasarım modelleriyle ilgili tasarım yapanlarla karşılaştırıldığında çok fazla şey bilmeleri pek mümkün değildir. Aynı zamanda kolejde desing desenleri öğretilip öğretilmediğine de bağlıdır. Benim deneyimlerime göre, onların olması muhtemel değildir. Çoğu üniversite ve özel kurslar size OOP öğretir ancak OOD öğretmez. DP çalışma şansı daha azdır.

Şahsen, projem de beni talep edinceye kadar DP çalışmadım. O zaman bile, kalıpta birkaçını kullandığımı, en azından kitapta anlatılan şekilde olmasa da aynı şekilde kullandığımı öğrendim. Kodlanmış olduklarını bilmek beni şaşırttı. DP'yi tanımıyorlarsa iyi tasarım becerilerine bakın. Eğer DP'yi tanıyorlarsa, tasarımda iyi olmaları muhtemeldir ancak yine de onları test edin. DP ile ilgili bazı vızıltı kelimelerini biraz önce başlamış olabilir ya da içeriden öğrenmişlerdi ve bunları uygulamadan birkaç desen öğrenmiş olabilirler.


0

Endüstri standardı olsun veya olmasın, sizinle birlikte bir iş başvurusunda bulunan kişilerin iş alanınızda ihtiyaç duydukları şeyleri bilmelerini (veya öğrenmelerini) beklemeniz makul olacaktır. Aksi taktirde sıradanlığa kendini kınıyorsun. Ancak, gerçekten gerekli değilse, bir miktar bilgi (ya da beceri) bir iş gereksinimi haline getirmekten kaçının.

Diyelim ki kabaca benzer geçmişlere sahip iki adayınız var, biri size tasarım desenlerinden bahsedebilir, diğeri de değildir. Bu size işlerinde nasıl performans gösterecekleri hakkında ne söyleyecek?

Mevcut yazılımın tasarım kalıplarını kullandığını söylüyorsunuz. Bu bir avantaj mı? Öyleyse nasıl? Yeni yazılımın mevcut kalıplara uygun olduğunu veya yeni kalıpların tanıtılmasının amacı sizin hedefiniz mi? Niye ya?


0

Aşağıdaki durumlarda tasarım kalıplarını bilmeyen kıdemli bir geliştirici düşünebilirim:

  1. Tasarım kalıpları hakkında sadece bir kitap var. İlk başta onları popüler yapan kitap. Eğer kişi bu kitabı okumamışsa, tasarım kalıpları hakkında bir şey bilmiyor olabilirler veya onları duymuş olabilirler, ancak ne için olduklarını tam olarak bilmiyor olabilirler.
  2. Bunun yerine, uml gibi bir şey bilmek zorunda kalacaklardı ....
  3. İnternetten tasarım kalıpları hakkında iyi bilgi bulmak kolay değildir. İyi desen tasarım bilgisi olan doğru web sayfasına giderseniz çok şanslısınız. 1995'ten sonra yazılıma basitçe ulaşmak, bir kişinin tasarım kalıpları kitabını bilmemesini sağlayabilir, çünkü kitap eskidir.

-2

OO dışı bir ortamdaki herhangi bir geliştirici neden OO tasarım kalıplarını bilmeli? Sadece Cobol, sadece PL / SQL, sadece Progress 4GL, vb. Yapan dükkanlarda çalıştım. kalıpları.

Bir kalıp kataloğundan akılsızca alıntı yapabilmek de sizi iyi bir geliştirici yapmaz (aslında benim tecrübeme göre, şimdiye kadar gördüğüm en kötü kod parçalarından bazılarını üretir). Yine de, "üst düzey geliştirici" nin işareti olmasını beklediğiniz şey budur. 15 yıldan beri sektörde çalışıyorum, ancak bir kalıp şeması çizmemi istemeyin. Hiç bu kadar zaman vermedim, ihtiyacım yok. Belirli bir ad vermeden neyin işe yarayacağını bulmak için yeterince deneyim kazandım ve resmi tanımlamaya ihtiyacım olursa nereye bakacağımı biliyorum (ve evet, kişisel kütüphanemde referans kitapları var). Bu, bazı okul kitaplarının tıkanmasından kazanılan bilginin değil, tecrübeli geliştiricinin işaretidir.


2
Sorunun alaka düzeyini göremiyorum. Bir Cobol geliştirici pozisyonu için röportaj yapmıyorum ve kesinlikle insanlardan "akılsızca ezberleme bilgiyi alıntılamalarını" istemeyeceğim. Senin tek nokta, gibi görünüyor Eğer tasarım desenleri bilmiyorum.
nikie

unix / linux 'C' ile yazılmıştır, OO Patterns ile doludur ve gof kitabındakilerden daha fazladır.
ctrl-alt-delor

2
“Özel bir ad belirtmeden neyin işe yarayacağını bulmak için yeterince deneyim kazandım.” Tasarım kalıplarının değerinin bir kısmı bu isimdir. Böylece “Fabrika modelini kullanalım” diyebilirsiniz ve meslektaşınız ne demek istediğinizi derhal bilir. İkiniz de böyle bir şeyi nasıl yapacağınızı biliyorsanız, ama ikinizin de bir adı yoktur, diğer kişi "ah, BU" demeden önce, daha fazla zaman harcamak zorundasınız. Ve yine, eğer kod bir WidgetFactory içeriyorsa, Fabrika modelini bilen bir kişi bunun ne için olduğunu anlar.
Nathan Long,

Nathan ile aynı fikirdeyim. Tasarım kalıplarının amacı ortak bir çözüme bir isim koymaktır. İnsanların kendi başlarına düşünmeyecekleri çok az tasarım deseni vardır. Avantaj, genel kabul görmüş bir ad vermektir, böylece diğer geliştiricilerle kanlı ayrıntılara girmeden iletişim kurabilirsiniz. Bu yüzden, bir desene bir isim koymanız gerekmediğine dair fikriniz, çünkü onları zaten kullanıyorsunuz, iletişimin önemli olmadığını söylemenize benzer. Bir röportaj yapmayı deneyin ve "iletişim önemli değil" ifadesi yapın ve kaç iş teklifi aldığınızı görün.
Dunk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.