Pregunta

A menudo veo personas que dicen que cierto software es " muy criticado " o que Microsoft tiende a escribir " un-opinionated " marcos. ¿Qué significa esto realmente?

¿Fue útil?

Solución

Si se opone a un marco, lo bloquea o lo guía en su forma de hacer las cosas.

Por ejemplo: algunas personas creen que un sistema de plantillas no debería proporcionar acceso a los métodos y funciones definidos por el usuario, ya que deja el sistema abierto para devolver HTML en bruto. Por lo tanto, un desarrollador de marcos de opinión solo permite el acceso a estructuras de datos. Por diseño, el software limita y alienta al diseñador a hacer las cosas a su manera.

Otro ejemplo ( tomado del enlace de señales ) es el de wiki . Los diseñadores de wiki tenían muchas opiniones. Pensaron que el código HTML era demasiado complicado para que las personas lo escribieran, por lo que se les ocurrió que consideraban que era una forma más natural de actualizar el contenido. También lo despojaron del diseño sofisticado porque sentían que el enfoque debería estar más en el contenido que en el diseño.

Apple tiene opiniones sólidas cuando diseña sus productos.

Diseño de software no opinado es más parecido a PERL / PHP. Permite al desarrollador y confía en el desarrollador para que tome las decisiones correctas y pone más control en sus manos.

También pondría a Microsoft en la columna sin opiniones. Un buen ejemplo de un marco de Microsoft sin opinión: .NET . Al abrir el CLR y las especificaciones, lo abrió a todo tipo de lenguajes y estilos de implementación.

Otros consejos

El software de opinión significa que básicamente hay una forma (la manera correcta ™) de hacer las cosas y tratar de hacerlo de manera diferente será difícil y frustrante. Por otro lado, hacer las cosas de la manera correcta ™ puede hacer que el desarrollo del software sea muy fácil, ya que se reduce la cantidad de decisiones que debe tomar y la capacidad de los diseñadores de software para concentrarse en Hacer que el software funcione se incrementa. El software de opinión puede ser excelente para usar, si se hace bien, si su problema se relaciona muy bien con la solución. Puede ser un verdadero problema resolver las partes de su problema que no se relacionan con las herramientas provistas. Un ejemplo aquí sería Ruby on Rails.

Por otra parte, el software sin opiniones le deja mucha flexibilidad al usuario (desarrollador). No proscribe un método para resolver un problema, pero proporciona herramientas flexibles que se pueden utilizar para resolver el problema de muchas maneras. La desventaja de esto puede ser que debido a que las herramientas son tan flexibles, puede ser relativamente difícil desarrollar cualquier solución. Es posible que el usuario (desarrollador) tenga que codificar a mano mucha más solución porque el marco no proporciona suficiente ayuda. También debe pensar mucho más sobre cómo proporcionar una solución y los desarrolladores mediocres pueden terminar con soluciones más pobres que si hubieran comprado algún software de opinión. PERL es probablemente el ejemplo clásico de software sin opiniones.

Mi ideal es un marco sin opiniones, pero con convenciones sólidas. Yo pondría a ASP.NET MVC en esta categoría. En realidad, todo el software tiene cierta opinión (aunque quizás no sea PERL). MVC tiene convenciones sólidas en su elección de modelo, pero ofrece muchas formas diferentes de resolver problemas dentro de esas convenciones. Algunas de esas formas pueden incluso romper el modelo. Sin embargo, usarlo correctamente, de acuerdo con las convenciones que se desarrollan en dicho marco puede ser una verdadera alegría.

Es básicamente un software que funciona de la forma en que sus autores creen que debería funcionar, en lugar de intentar complacer a todos. Eso significa que a mucha gente no le va a gustar, pero a los que lo hagan les encantará.

Rails es probablemente el ejemplo canónico de un marco de opinión: haces las cosas a su manera y todo es sencillo. Si no lo haces, te espera un poco de dolor. Pero está bien, si no quieres hacer las cosas a su manera, no quieres usar Rails.

Por el bien del equilibrio, proporcionaré una descripción (más bien de opinión) que sea más favorable al enfoque de opinión (en contraste con algunas de las otras respuestas).

Los marcos de opinión proporcionan un "camino dorado", que se supone que es la mejor práctica para la mayoría de las personas y la mayoría de los escenarios (a los ojos de los autores).

Sin embargo, esto no significa necesariamente bloqueo. Esto significa que puede requerir un esfuerzo adicional para hacer las cosas de manera diferente.

Los marcos con menos opiniones proporcionan una serie de opciones diferentes y le permiten a usted decidir.

Los marcos de opinión generalmente eliminan la carga del desarrollador para reinventar la rueda o repensar el mismo problema una y otra vez y, por lo tanto, ayudar a centrarse en el problema real en cuestión.

En el mundo de código abierto puede encontrar muchos marcos opuestos pero competidores, por lo que aún tiene una opción. Solo tienes que elegir tu propio camino dorado.

El software de opinión está creado y diseñado de tal manera que facilita hacer las cosas de cierta manera. Favorece ciertos patrones de diseño más que otros. En el proceso, hace que sea difícil desviarse del estilo de desarrollo de software para el que se desarrolló. Otra forma de decirlo es que favorece la convención sobre la configuración. es decir, las opciones de configuración son muy limitadas ya que el software asume muchos de los aspectos de configuración. El software de opinión generalmente es más rápido de dominar una vez que se comprenden las suposiciones.

Por otra parte, el software no promocionado hace algunas suposiciones. Y como resultado, los marcos de desarrollo de software / software que no están respaldados a menudo tienden a tener muchas opciones de configuración. Un desarrollador normalmente tiene que tomar muchas decisiones con respecto a varios aspectos del software. A menudo, se desarrollan varias herramientas para facilitar el manejo de estas enormes opciones. p.ej. Visual Studio .NET para .NET, Eclipse IDE para Java, etc. El software no dotado normalmente requiere más tiempo para dominarlo que el software de opinión.

tl; dr :

  • Opinionado : por ejemplo, Ruby on Rails . Hay una forma particularmente preferida de hacer las cosas, y usted recibe mucho apoyo para hacer las cosas de esa manera. Hacer las cosas de otra manera es difícil, o para algunos sistemas imposibles (Cassandra viene a la mente).
  • Sin opiniones : por ejemplo, Perl 5 . Puedes hacer lo que quieras, como quieras, en cualquier estilo. Todos los estilos son igualmente abiertos, válidos y compatibles.

Mucha gente está haciendo referencia a ASP.NET MVC como " unopinionated " marco, y solo quería opinar con un par de pensamientos al respecto.

Es cierto que ASP.NET MVC no exige demasiado; Puede utilizar cualquier solución de persistencia que desee, ya sea de Linq-to-SQL, ADO.NET Entities, NHibernate, etc.

Por otro lado, el marco MVC tiende a favorecer la convención sobre la configuración, para citar a Phil Haack, que sugiere en gran medida seguir el patrón predefinido para ubicar controladores, vistas, modelos y otros códigos. Aunque puede modificar este comportamiento, es más fácil nadar con la corriente, y para la mayoría de las personas, no hay problema en hacerlo.

También rodean a ASP.NET MVC muchas personas de opinión, lo que encuentro que conduce a muchos tutoriales sesgados que insisten en cubrir, por ejemplo. Pruebas unitarias e inyección de dependencia; Estoy a favor de las buenas pruebas y la separación de inquietudes, pero sí percibo que esos temas se ponen un poco en la garganta, a menudo antes de cubrir conceptos básicos más útiles.

Una vez más, tengo que admitir que dentro de esas áreas, el marco en sí mismo está completamente abierto para adoptar cualquier solución de prueba unitaria que desee, así como cualquier marco de inyección de dependencia y simulacro que quiera usar, así que supongo que eso proporciona otro ejemplo de flexibilidad, incluso dentro de la " funda bíblica " de pruebas unitarias, etc. que parecen estar sucediendo.

Es la cantidad de convenciones implementadas en un marco de trabajo y el número de decisiones que se han tomado.

Si, por ejemplo, hay 5 (o más) formas diferentes de enviar datos del formulario a una acción del controlador (como es el caso en ASP.NET MVC), el marco parece ser bastante "sin opiniones". - ¡La decisión depende de ti!

Sin embargo, si el marco habilita (ya sea mediante la desactivación directa de otras formas, o al alentarlo fuertemente) solo una manera de hacer eso (lo que es el caso con Fubu MVC), podría decir que la decisión se ha tomado. por el marco, por lo que el marco se opone.

El ejemplo que verá mucho en este momento es el marco MVC de ASP.NET. Es increíblemente extensible, pero eso es su caída en algunos aspectos, no hay nada de eso. ¿Quieres hacer acceso a los datos? Tendrás que escribir eso tú mismo. ¿Quieres un poco de AJAX? Ídem.

Sin embargo, como es altamente extensible, si se basa en él, puede convertirlo en un marco de opinión. Esto es lo que hacen los gustos de MVCContrib , te brindan métodos específicos para hacer las cosas, lo que significa que debes escribe menos código.

Esto significa que si quieres romper con la opinión, a menudo hay más trabajo que hacer que si estuvieras trabajando en la versión de vainilla. Este es un escenario 80/20 sin embargo. Si eliges tu marco de opinión correctamente, solo querrás romper con las opiniones el 20% del tiempo y serás altamente productivo el otro 80% del tiempo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top