Frage

Oft sehe ich Leute, die sagen, dass bestimmte Software ist „sehr eigenwillig“ oder dass Microsoft neigt dazu, „un-opinionated“ Frameworks zu schreiben. Was bedeutet das eigentlich bedeuten?

War es hilfreich?

Lösung

Wenn ein Rahmen eigenwillig ist, es sperrt oder führt Sie in die Art und Weise, Dinge zu tun.

Zum Beispiel: Einige Leute glauben, dass ein Template-System keinen Zugriff auf benutzerdefinierte Methoden bieten soll und als es das System verläßt offen Rückkehr rohe HTML. So ein meinungs Framework-Entwickler erlaubt nur den Zugriff auf Datenstrukturen. Durch die Konstruktion ist die Software zu begrenzen und fördert die Designer in die Dinge ihren Weg zu tun.

Ein weiteres Beispiel ( genommen aus den Signalen verknüpfen ) ist die von Wiki . Die Designer von Wiki hatten viele Meinungen. Sie dachten, HTML war zu kompliziert für Menschen zu schreiben, so kamen sie mit dem, was sie fühlte, war ein natürlicher Weg, um Inhalte zu aktualisieren. Sie zogen es auch von ausgefallenem Design, weil sie den Fokus fühlte sollte mehr auf den Inhalt als Entwurf sein.

hat Apple starke Meinungen, wenn es seine Produkte Designs.

Un-opinionated Software-Design ist mehr wie PERL / PHP. Es ermöglicht dem Entwickler und vertraut auf die Entwickler, die richtigen Entscheidungen zu treffen und mehr Kontrolle in die Hände legt.

Ich würde auch Microsoft setzen in der nicht-opinionated Spalte. Ein gutes Beispiel für eine Microsoft Framework, das un-opininated ist: .NET. Durch die CLR zu öffnen und die Spezifikationen, öffnete es zu allen möglichen Sprachen und Stile von Implementierungen.

Andere Tipps

Stur Software bedeutet, dass es im Grunde ein Weg ist, (die richtig ™), Dinge zu tun und zu versuchen, es zu tun, wird unterschiedlich schwierig und frustrierend sein. Auf der anderen Seite, Dinge zu tun, die richtig ™ kann es machen sehr einfach mit der Software als die Anzahl der Entscheidungen zu entwickeln, die Sie machen müssen, ist reduziert und die Fähigkeit des Software-Entwicklers auf dem konzentrieren die Software Arbeit machen wird erhöht. Opinionated Software kann groß zu verwenden, wenn gut gemacht, wenn Ihr Problem schön die Lösung bildet auf. Es kann ein echten Schmerzen, jene Teile des Problems zu lösen, die auf die bereitgestellten Tool Karte nicht. Ein Beispiel wäre hier Ruby on Rails.

Non-opinionated Software, auf der anderen Seite, läßt viel Flexibilität für den Anwender (Entwickler). Es ist ächten nicht ein Verfahren zur Herstellung einer Problemlösung, sondern bietet flexible Werkzeuge, die verwendet werden können, um das Problem in vielerlei Hinsicht zu lösen. Die Kehrseite der Medaille ist, dass, weil die Werkzeuge so flexibel sind, kann es relativ schwierig sein, eine Lösung zu entwickeln. Viel mehr der Lösung kann durch den Benutzer (Entwickler) werden von Hand codiert, weil der Rahmen nicht genug Hilfe bietet. Sie haben auch viel mehr darüber nachdenken, wie eine Lösung zu schaffen und mittelmäßig Entwickler als mit schlechteren Lösungen können am Ende, wenn sie in eine eigenwillige Software gekauft hatten. PERL ist wahrscheinlich das klassische Beispiel für nicht-opinionated Software.

Mein Ideal ist ein nicht-opinionated Rahmen, aber mit starken Konventionen. Ich würde ASP.NET MVC in dieser Kategorie setzen. In Wirklichkeit ist die gesamte Software zu einem gewissen Grad opinionated (obwohl PERL vielleicht nicht). MVC hat starke Konventionen in seiner Wahl des Modells, sondern bietet viele verschiedene Möglichkeiten, Probleme innerhalb dieser Konventionen zu lösen. Einige dieser Möglichkeiten kann auch das Modell brechen. Richtig eingesetzt, jedoch in Übereinstimmung mit den Konventionen in einem solchen Rahmen der Entwicklung kann eine echte Freude sein.

Es ist im Grunde Software, die die Art und Weise seiner Autoren denken, funktioniert es funktionieren sollte, anstatt zu versuchen, es allen recht machen. Das bedeutet, dass eine Menge Leute werden es nicht mögen, aber diejenigen, die es tun, lieben werden.

Rails ist wahrscheinlich das bekannteste Beispiel eines opinionated Rahmen: Sie Dinge ihren Weg machen, und alles ist glatt. Wenn Sie nicht tun, sind Sie für einige Schmerzen in. Aber das ist in Ordnung -. Wenn Sie wollen die Dinge nicht tun, um ihre Art und Weise, Sie nicht wollen, Rails verwenden

Für Balance willen will ich biete eine (eher eigenwillige) Beschreibung, die günstiger für den eigenwilligen Ansatz ist (im Gegensatz zu einigen der anderen Antworten).

Stur Frameworks bietet einen „goldenen Weg“, die für die meisten Menschen und die meisten Szenarien die beste Praxis sein (in den Augen der Autoren).

sollte

Dies bedeutet jedoch nicht unbedingt, dass Lock-in. Es bedeutet, dass es möglicherweise einige zusätzliche Anstrengungen erfordert, Dinge anders zu tun.

Weniger opinionated Frameworks bieten eine Reihe von verschiedenen Optionen und überlassen es Ihnen zu entscheiden.

Stur Rahmenbedingungen in der Regel die Belastung vom Entwickler entfernen Sie das Rad oder zu überdenken das gleiche Problem immer wieder neu zu erfinden und damit auf das eigentliche Problem bei der Hand konzentrieren helfen.

In der Open-Source-Welt kann man viele meinungs noch konkurrierenden Frameworks finden, so dass Sie immer noch eine Wahl haben. Sie müssen nur Ihren eigenen goldenen Weg wählen.

Stur Software aufgebaut und so gestaltet, dass sie es einfach, Dinge in einer bestimmten Weise zu tun machen. Es begünstigt bestimmte Design-Muster mehr als andere. Im Prozess macht es schwierig, von der Art der Software-Entwicklung abweichen, für die es entwickelt wurde. Eine andere Art, es auszudrücken ist, dass es „Konvention vor Konfiguration“ begünstigt. das heißt sind die Konfigurationsmöglichkeiten sehr begrenzt, da die Software viele der Konfigurationsaspekte annimmt. Opinionated Software in der Regel schneller ist zu meistern, wenn die Annahmen verstanden werden.

Unopinionated Software auf der anderen Seite macht einige Annahmen. Und als Ergebnis, Software / Software-Entwicklungs-Frameworks, die oft unopinionated neigen viele Konfigurationsmöglichkeiten haben. Ein Entwickler hat in der Regel eine Menge von Entscheidungen in Bezug auf verschiedene Aspekte der Software zu machen. Häufig werden verschiedene Werkzeuge entwickelt, um mit diesen enormen Möglichkeiten einfachen Umgang zu machen. z.B. Visual Studio .NET für .NET, Eclipse-IDE für Java usw. Unopinionated Software dauert in der Regel länger als Master opinionated Software.

tl; dr :

  • Opinionated : z.B. Ruby on Rails . Es ist eine besonders bevorzugte Art und Weise, Dinge zu tun, und Sie eine Menge Unterstützung bekommen in Dinge, die Art und Weise zu tun. Dinge zu tun, andere Wege ist hart, oder für einige Systeme unmöglich (Cassandra den Sinn kommt).
  • Un-opinionated : z.B. Perl 5 . Sie können alles tun, was gefällt, wie du möchtest, in jedem Stil. Alle Stile sind gleichermaßen offen, gültig und unterstützt werden.

Eine Menge Leute verweisen auf ASP.NET MVC als „unopinionated“ Rahmen, und ich wollte nur mit ein paar Gedanken über das wiegen.

Es ist wahr, dass ASP.NET MVC nicht zu viel Mandat; Sie können, was Ausdauer Lösung, die Sie sehen, es Linq-to-SQL, ADO.NET Entities, NHibernate, usw. verwendet werden.

Auf der anderen Seite, wird der MVC-Framework ist in der Regel „Konvention über Konfiguration“ bevorzugen, Phil Haack zu zitieren, das folgende schlägt stark das vordefinierte Muster zum Auffinden von Controllern, Ansichten, Modelle und anderen Code. Obwohl Sie dieses Verhalten ändern können, ist es einfacher, mit dem Strom zu schwimmen, und für die meisten Menschen, es gibt kein Problem, das zu tun.

Umgebung auch ASP.NET MVC gibt viele eigenwillige Menschen, die ich führt zu viel voreingenommen Tutorials, die auf Abdeckung bestehen, z.B. Komponententests und Abhängigkeit Injektion; Ich bin für eine gute Prüfung und Trennung von Bedenken, aber ich sehe, daß solche Themen jemandes Kehle ein wenig nach unten geschoben werden, oft voraus, die mehr nützlichen Grundlagen.

Es wieder, ich muss zugeben, dass der Rahmen selbst in diesen Bereichen völlig offen ist die Annahme, was Unit-Testing-Lösung Sie wollen, sowie unabhängig von Dependency Injection und spöttischen Frameworks Sie verwenden möchten, so dass ich denke, dass liefert ein weiteres Beispiel für die Flexibilität, auch innerhalb des „Bibel-Bashing“ der Unit-Tests, etc., die zu gehen auf scheinen.

Es ist die Menge an Konventionen in einem framwork umgesetzt und die Anzahl der Entscheidung, die getroffen worden war.

Wenn zum Beispiel gibt es 5 (oder mehr) verschiedene Arten von Formulardaten an eine Controller-Aktion zu unterbreiten (was der Fall in ASP.NET MVC ist), scheint der Rahmen ziemlich „un-risch“ zu sein - die Entscheidung liegt bei Ihnen!

Wenn jedoch ermöglicht der Rahmen (entweder direkt über andere Wege zu deaktivieren, oder durch stark es ermutigend) nur eine Möglichkeit, das Ding zu tun (was der Fall mit Fubu MVC ist), könnte man sagen, dass die Entscheidung getroffen wurde durch den Rahmen, so dass damit der Rahmen opinionated.

Das Beispiel Sie viel im Moment sehen, ist der ASP.NET MVC-Framework. Es ist erstaunlich dehnbar, aber das ist ihr Sturz in mancher Hinsicht gibt es kein Fleisch. Möchten Sie den Datenzugriff tun? Sie werden feststellen, dass Sie sich schreiben. Möchten Sie einige AJAX los? Ditto.

Da es jedoch stark dehnbar ist, wenn man auf sie bauen Sie können es in ein meinungs Rahmen drehen. Dies ist, was die gerne von MVCContrib tun, sie geben Ihnen spezifische Methoden, Dinge zu tun, was bedeutet, Sie müssen schreiben weniger Code.

Das bedeutet, dass, wenn Sie von der Meinung brechen wollen es oft mehr Arbeit, als zu tun ist, wenn Sie auf der Vanille-Version gearbeitet hat. Dies ist ein 80/20 obwohl Szenario. Wenn Sie Ihren opinionated Rahmen richtig gewählt werden Sie nur von den Meinungen 20% der Zeit brechen wollen, und Sie werden die anderen 80% der Zeit sehr produktiv sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top