Görüşlü yazılım nedir?


200

Sıklıkla bazı yazılımların "çok kanaatli" olduğunu veya Microsoft'un "kanaatsiz" çerçeveler yazma eğiliminde olduğunu söylerim. Bu aslında ne anlama geliyor?


Yanıtlar:


206

Bir çerçeve değerlendirilirse, sizi bir şeyler yapma yolunda kilitler veya yönlendirir.

Örneğin: bazı insanlar, bir şablon sisteminin, sistemi ham HTML döndürmeye açık bıraktığı için kullanıcı tanımlı yöntemlere ve işlevlere erişim sağlamaması gerektiğine inanmaktadır. Dolayısıyla, düşünülmüş bir çerçeve geliştiricisi yalnızca veri yapılarına erişime izin verir. Tasarım gereği, yazılım sınırlayıcıdır ve tasarımcıyı işleri kendi başına yapmaya teşvik eder.

Başka bir örnek ( sinyaller bağlantısından alınmıştır ) wiki örneğidir . Wiki tasarımcılarının birçok fikri vardı. HTML'nin insanların yazmak için çok karmaşık olduğunu düşündüler, bu nedenle içeriği güncellemenin daha doğal bir yolu olduğunu düşündükleri şeyle karşılaştılar. Ayrıca süslü tasarımı da çıkardılar çünkü odaklanmanın içerikten ziyade tasarımdan daha fazla olması gerektiğini hissettiler.

Apple ürünlerini tasarlarken güçlü fikirlere sahiptir.

Düşüncesiz yazılım tasarımı daha çok PERL / PHP gibidir. Geliştiriciye izin verir ve geliştiriciye doğru kararları verir ve ellerinde daha fazla kontrol sağlar.

Microsoft'u düşünülmemiş sütuna da yerleştiririm. Bir Microsoft çerçevesi iyi bir örnek un-opininated: .NET. CLR ve teknik özellikleri açarak, onu her türlü dile ve uygulama stiline açtı.


18
"Seni kilitler" demezdim, daha çok "altın" yoldan sapmayı kolaylaştırmaz. Altın yol genellikle en iyi uygulamadır, çoğu insan için çoğu zaman çalışması gereken bir şeydir.
dpan

5
Kilitlerin biraz güçlü olduğuna katılıyorum, ancak birçok olumsuz ürünün ne kadar başarılı olduğunu belirterek bu olumsuz çağrışımı ortadan kaldırırım.
cgp

32
Peki, bu cevabın görüşlü olduğu açıktır;)
dpan

6
Görüşlü bir çerçeve, çerçeve, çerçeve tasarımcısı tarafından yapılan varsayımları ihlal etmeyecek şekilde kullanıldığında, kullanıcıları bu çerçeve ile en az frinksiyonu deneyimleyecek şekilde tasarlanan çerçevedir.
Crippledsmurf

2
AltCognito'ya katılıyorum. .NET , geliştiriciyi WinForms uygulamalarında Model ve Görünüm'ü karıştırmayı teşvik eder, örneğin iş mantığını düğme tıklama olayı tarafından oluşturulan yöntemlere yerleştirmeyi kolaylaştırır. Bu şekilde, Microsoft dolaylı olarak kısa görüşlü geliştiricileri kodlarını çerçevelerine kilitlemeye teşvik eder. Daha temiz bir tasarım, düğme tıklama yöntemini ayrı bir modülde Model mantığı ile ikinci bir işlevi çağırmaya zorlamak gibi daha iyi uygulamaları zorlar veya teşvik eder. NET'te temiz bir tasarım elde edilemez, varsayılan olarak teşvik edilmez.
Jared Updike

62

Görüşlü yazılım, temelde bir şey yapmanın tek yolu ( doğru yol ™) olduğu ve bunu farklı bir şekilde yapmaya çalışmanın zor ve sinir bozucu olacağı anlamına gelir. Öte yandan, doğru şekilde yapmak ™ ™, vermeniz gereken kararların sayısı azaldıkça ve yazılım tasarımcılarının yazılımı çalıştırmaya konsantre olma yeteneği arttıkça yazılımla geliştirmeyi çok kolaylaştırabilir. Eğer iyi bir şekilde yapılırsa, probleminiz çözüme güzel bir şekilde eşlenirse, görüşlü yazılım kullanmak harika olabilir. Sorununuzun sağlanan araçlarla eşleşmeyen kısımlarını çözmek gerçek bir acı olabilir. Burada bir örnek Ruby on Rails olabilir.

Diğer yandan, düşüncesiz yazılımlar kullanıcıya (geliştiriciye) çok fazla esneklik katar. Bir sorunu çözmenin bir yöntemini yasaklamaz, ancak sorunu birçok şekilde çözmek için kullanılabilecek esnek araçlar sağlar. Bunun dezavantajı, aletler çok esnek olduğu için herhangi bir çözüm geliştirmek nispeten zor olabilir. Çözümün çok daha fazlasının kullanıcı (geliştirici) tarafından elle kodlanması gerekebilir, çünkü çerçeve yeterli yardım sağlamaz. Ayrıca bir çözümün nasıl sağlanacağı hakkında çok daha fazla düşünmelisiniz ve vasat geliştiriciler, bazı düşünülmüş yazılımlardan satın aldıklarından daha kötü çözümlerle sonuçlanabilir. PERL muhtemelen düşünülmeyen yazılımların klasik örneğidir.

Benim idealim görüşülmemiş bir çerçeve, ancak güçlü sözleşmeleri olan bir çerçevedir. ASP.NET MVC bu kategoriye koymak istiyorum. Gerçekte, tüm yazılımlar bir dereceye kadar değerlendirilir (belki de PERL olmasa da). MVC, model seçiminde güçlü sözleşmelere sahiptir, ancak bu sözleşmelerdeki sorunları çözmek için birçok farklı yol sunar. Bu yollardan bazıları modeli bile bozabilir. Bununla birlikte, doğru bir şekilde kullanılması, böyle bir çerçevede gelişen sözleşmelere uygun olarak gerçek bir zevk olabilir.


22

Temel olarak, herkesi memnun etmek yerine yazarlarının çalışması gerektiğini düşündüğü şekilde çalışan bir yazılımdır. Bu, birçok insanın hoşuna gitmeyeceği, ancak sevdiklerinin seveceği anlamına gelir.

Raylar muhtemelen tartışmalı bir çerçevenin kanonik örneğidir: işleri kendi yollarıyla yaparsınız ve her şey pürüzsüzdür. Eğer yapmazsan, biraz acı içindesin. Ama sorun değil - bir şeyleri kendi yolunda yapmak istemiyorsanız, Rails kullanmak istemezsiniz.


1
Buna katılıyorum .... Bir parça opinated yazılımım var ... ve optiated çünkü benim küçük evcil hayvan projem ... Yaygın olarak benimseneceği konusunda hiçbir fikrim yoktu ... bazıları seviyor, diğerleri şikayet ediyor .. ama hepsi bunun benim evcil hayvan projem olduğunu anlıyor
TimothyP

8

Denge adına, görüşlü yaklaşıma (diğer cevapların bazılarının aksine) daha elverişli (daha çok görüşlü) bir açıklama sunacağım.

Görüşlü çerçeveler, çoğu insan ve çoğu senaryo (yazarların gözünde) için en iyi uygulama olması gereken bir "altın yol" sağlar.

Ancak bu mutlaka kilitlenme anlamına gelmez. Bu, işleri farklı şekilde yapmak için ekstra çaba gerektirebileceği anlamına gelir.

Daha az görüşlü çerçeveler bir dizi farklı seçenek sunar ve karar vermek için size bırakır.

Görüşlü çerçeveler genellikle tekerleği yeniden icat etmek veya aynı sorunu tekrar tekrar düşünmek ve böylece mevcut gerçek probleme odaklanmaya yardımcı olmak için yükü geliştiriciden kaldırır.

Açık kaynak dünyasında, birçok fikirli ancak rakip çerçeveyi bulabilirsiniz, bu yüzden hala bir seçeneğiniz vardır. Sadece kendi altın yolunu seçmelisin.


1
+1, bahsettiğiniz kurumsal uygulamalara benziyor. Siebel'in kolayca kırılamayan altın bir yolu var, ancak yapılabilir ve ara sıra yapılan bir ekip üzerinde çalıştım. Kullanıcı arabirimi öğeleri, veri depolama ve iş mantığını her zaman geliştirmek zorunda olmadığınız için geliştirme sürecini daha hızlı hareket ettirebilir.
J. Polfer

5

Görüşlü yazılım, işleri belirli bir şekilde yapmayı kolaylaştıracak şekilde tasarlanmış ve tasarlanmıştır. Bazı tasarım modellerini diğerlerinden daha fazla tercih eder. Bu süreçte, geliştirildiği yazılım geliştirme tarzından sapmayı zorlaştırır. Bunu ifade etmenin bir başka yolu da "Konfigürasyon üzerine Sözleşme" yi desteklemesidir. yani, yazılım birçok yapılandırma yönünü üstlendiğinden yapılandırma seçenekleri oldukça sınırlıdır. Varsayımların anlaşılmasından sonra, görüşlü yazılımların ustalaşması genellikle daha hızlıdır.

Öte yandan, açılmamış yazılım az sayıda varsayım yapar. Sonuç olarak, açılmamış yazılımlar / yazılım geliştirme çerçeveleri genellikle birçok yapılandırma seçeneğine sahiptir. Bir geliştirici genellikle yazılımın çeşitli yönleriyle ilgili birçok karar vermelidir. Genellikle, bu muazzam seçeneklerle başa çıkmayı kolaylaştıracak çeşitli araçlar geliştirilir. .NET için Visual Studio .NET, Java için Eclipse IDE vb. Kullanılmayan yazılımın ustalaşması genellikle düşünülen yazılımdan daha uzun sürer.


5

tl; dr :

  • Görüş : örneğin Ruby on Rails . Bazı şeyleri yapmanın özellikle tercih edilen bir yolu var ve işleri bu şekilde yapmak için çok destek alıyorsunuz. Başka şeyler yapmak zor ya da bazı sistemler için imkansız (Cassandra akla geliyor).
  • Değerlendirilmemiş : örn. Perl 5 . İstediğiniz her şeyi, istediğiniz şekilde, herhangi bir tarzda yapabilirsiniz. Tüm stiller eşit derecede açık, geçerli ve desteklenmektedir.

3

Bir çok insan ASP.NET MVC'yi "açılmamış" bir çerçeve olarak atıfta bulunuyor ve ben de bununla ilgili birkaç düşünce ile tartmak istedim.

ASP.NET MVC'nin çok fazla yetki vermediği doğrudur; Linq-to-SQL, ADO.NET Entities, NHibernate, vs. gibi istediğiniz kalıcı çözümü kullanabilirsiniz.

Kapak tarafında, MVC çerçevesi, denetleyicileri, görünümleri, modelleri ve diğer kodları bulmak için önceden tanımlanmış kalıbı takip etmeyi şiddetle öneren Phil Haack'i alıntılamak için "konfigürasyon üzerinde konvansiyonu" tercih etme eğilimindedir. Bu davranışı değiştirebilmenize rağmen, akımla yüzmek daha kolaydır ve çoğu insan için bunu yapmakta sorun yoktur.

Ayrıca ASP.NET MVC'yi çevreleyen çok sayıda görüşlü insan var, bu da örtü, örneğin birim testi ve bağımlılık enjeksiyonu; Ben iyi bir test ve endişelerin ayrılması için çalışıyorum, ancak bu tür konuların boğazından biraz aşağıya doğru itildiğini ve genellikle daha kullanışlı temelleri kapsamadan önce olduğunu düşünüyorum.

Yine, bu alanlarda, çerçevenin kendisinin, istediğiniz birim test çözümünü ve kullanmak istediğiniz bağımlılık enjeksiyonunu ve alaycı çerçevelerini benimsemeye tamamen açık olduğuna karar vermeliyim, bu yüzden başka bir örnek esneklik, hatta "İncil dayak" birim test, vb oluyor gibi görünüyor.


2

Bir çerçevede uygulanan konvansiyon miktarı ve alınan karar sayısıdır.

Örneğin, form verilerini bir denetleyici eylemine göndermenin 5 (veya daha fazla) farklı yolu varsa (ASP.NET MVC'de olduğu gibi), çerçeve oldukça "görüşsüz" gibi görünüyor - karar verilmiş sana!

Bununla birlikte, çerçeve (doğrudan başka yollardan devre dışı bırakarak veya güçlü bir şekilde teşvik ederek) bu şeyi yapmanın yalnızca bir yolunu (Fubu MVC'de olduğu gibi) etkinleştirirse, kararın çerçeve tarafından alındığını söyleyebilirsiniz. böylece çerçeveyi görüşlü kılar.


1

Şu anda çok şey göreceğiniz örnek ASP.NET MVC çerçevesidir. Şaşırtıcı bir şekilde genişletilebilir, ancak bu bazı açılardan düşüşüdür, et yoktur. Veri erişimi yapmak ister misiniz? Bunu kendin yazman gerekecek. AJAX'ın devam etmesini ister misiniz? Aynen.

Bununla birlikte, oldukça genişletilebilir olduğu için, üzerine inşa ederseniz bunu tartışmalı bir çerçeveye dönüştürebilirsiniz. Bu gibiler ne MVCContrib yapmak, onlar daha az kod yazmak zorunda anlamına gelir size şeyler yapmanın özel yöntemler verir.

Bu, görüşten kopmak istiyorsanız, vanilya sürümü üzerinde çalıştığınızdan daha fazla iş yapılması anlamına gelir. Bu bir 80/20 senaryosudur. Eğer fikirli çerçevenizi doğru seçtiyseniz, sadece zamanın% 20'sinden gelen görüşlerden kopmak isteyeceksiniz ve zamanın% 80'inde oldukça üretken olacaksınız.


ASP.NET MVC doğal olarak ASP.NET AJAX çerçevesine uyuyor gibi görünüyor ve hatta bu kütüphaneye MVC'ye özgü eklemeler içeriyor, bu yüzden Ajax uygulama seçiminin tamamen tarafsız olduğunu kabul etmiyorum. Ayrıca, kütüphane özellikle jQuery ue'yu zorunlu kılmıyor, hatta tavsiye etmiyor, ancak bunu paketliyor, ağızlık sırasında o yönde gizlice işaret ediyor, "şuna bak".
Rob
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.