Pregunta ¿Qué es el software obstinado?


A menudo veo que la gente dice que cierto software es "muy obstinado" o que Microsoft tiende a escribir marcos "no obstinados". ¿Qué significa esto realmente?


192
2018-04-29 12:02


origen


Respuestas:


Si un marco de trabajo es obstinado, lo bloquea o lo guía a su manera 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 sin formato. Entonces, un desarrollador de framework obstinado 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 tuvieron muchas opiniones. Pensaron que el HTML era demasiado complicado para que las personas escribieran, por lo que se les ocurrió lo que sentían 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 ser más en el contenido que en el diseño.

Apple tiene fuertes opiniones cuando diseña sus productos.

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

También colocaría a Microsoft en la columna no obstinada. Un buen ejemplo de un marco de Microsoft que no tiene ninguna opinión: .NET. Al abrir el CLR y las especificaciones, lo abrió a todo tipo de idiomas y estilos de implementaciones.


198
2018-04-29 12:06



El software Opinionated significa que hay básicamente una forma (el manera correcta™) para hacer cosas y tratar de hacerlo de manera diferente será difícil y frustrante. Por otro lado, hacer las cosas manera correcta™ puede hacer que sea muy fácil desarrollarlo con el software ya que se reduce el número de decisiones que debe tomar y aumenta la capacidad de los diseñadores de software para concentrarse en hacer que el software funcione. El software Opinionated puede ser ideal para usar, si se hace bien, si su problema se asigna a la solución de manera adecuada. Puede ser un verdadero dolor resolver aquellas partes de su problema que no se asignan a las herramientas provistas. Un ejemplo aquí sería Ruby on Rails.

El software no pertinaz, por otro lado, deja mucha flexibilidad al usuario (desarrollador). No proscribe un método para resolver un problema, pero proporciona herramientas flexibles que se pueden usar 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 de la solución porque el marco no proporciona suficiente ayuda. También tiene que 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 un software obstinado. PERL es probablemente el ejemplo clásico de software no obstinado.

Mi ideal es un marco no obstinado, pero con fuertes convenciones. Yo pondría ASP.NET MVC en esta categoría. En realidad, todo el software es obstinado hasta cierto punto (aunque tal vez no PERL). MVC tiene fuertes convenciones en su elección de modelo, pero ofrece muchas formas diferentes de resolver problemas dentro de esas convenciones. Algunas de esas formas incluso pueden romper el modelo. Si se usa correctamente, sin embargo, de acuerdo con las convenciones que se desarrollan en dicho marco, puede ser una verdadera alegría.


60
2018-04-29 12:16



Básicamente es un software que funciona de la manera que sus autores piensan que debería funcionar, en lugar de tratar de complacer a todos. Eso significa que a mucha gente no le gustará, pero a los que lo hagan les encantará.

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


22
2018-04-29 12:07



En aras del equilibrio, proporcionaré una descripción (bastante obstinada) que es más favorable al enfoque obstinado (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 necesariamente significa lock-in. Significa que puede requerir un esfuerzo adicional para hacer las cosas de manera diferente.

Los marcos menos dogmáticos brindan una serie de opciones diferentes y dejan que usted decida.

Los marcos de trabajo de opinión generalmente eliminan la carga del desarrollador para reinventar la rueda o replantear el mismo problema una y otra vez y así ayudar a enfocarse en el problema real.

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


7
2018-04-29 12:42



El software Opinionated está construido y diseñado de tal manera que hace que sea fácil 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 expresarlo 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 Opinionated generalmente es más rápido de dominar una vez que se comprenden las suposiciones.

El software sin vinculación por otro lado hace pocas suposiciones. Y como resultado, los softwares / frameworks de desarrollo de software que no están optimizados a menudo tienden a tener muchas opciones de configuración. Un desarrollador generalmente tiene que tomar muchas decisiones sobre diversos aspectos del software. A menudo, se desarrollan varias herramientas para facilitar el tratamiento de estas enormes opciones. p.ej. Visual Studio .NET para .NET, Eclipse IDE para Java, etc. El software sin apresurar suele tardar más en dominar que el software obstinado.


5
2018-06-15 16:38



tl; dr:

  • Dogmático: p.ej. Ruby on Rails. Hay una manera particularmente preferida de hacer las cosas, y recibes mucho apoyo para hacer las cosas de esa manera. Hacer las cosas de otra manera es difícil, o imposible para algunos sistemas (me viene a la mente Casandra).
  • No-obstinado: p.ej. Perl 5. Puedes hacer lo que quieras, de la forma que quieras, en cualquier estilo. Todos los estilos son igualmente abiertos, válidos y compatibles.

5
2017-08-17 16:17



Mucha gente hace referencia a ASP.NET MVC como un marco de trabajo "no optimizado", y solo quería opinar con un par de ideas al respecto.

Es cierto que ASP.NET MVC no exige demasiado; puede usar cualquier solución de persistencia que desee, ya sea Linq-to-SQL, Entidades ADO.NET, 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 alterar este comportamiento, es más fácil nadar con la corriente, y para la mayoría de las personas, no hay problema para hacerlo.

También alrededor de ASP.NET MVC hay mucha gente obstinada, lo cual me lleva a muchos tutoriales parciales que insisten en cubrir, p. pruebas unitarias e inyección de dependencia; Estoy a favor de las pruebas y la separación de las preocupaciones, pero percibo que esos temas son un poco pesados, a menudo antes de cubrir aspectos básicos más útiles.

Una vez más, tengo que admitir que dentro de esas áreas, el marco está completamente abierto a la adopción de cualquier solución de prueba de unidad que desee, así como cualquier inyección de dependencia y frameworks burlones que quiera usar, así que supongo que eso proporciona otro ejemplo de flexibilidad, incluso dentro del "ataque bíblico" de las pruebas unitarias, etc. que parece estar sucediendo.


3
2018-04-29 13:18



Es la cantidad de convenciones implementadas en una estructura y el número de decisiones que se han tomado.

Si, por ejemplo, hay 5 (o más) formas diferentes de enviar datos de formulario a una acción de controlador (como es el caso de ASP.NET MVC), el marco parece ser bastante "no obstinado": la decisión está en marcha ¡para ti!

Sin embargo, si el marco habilita (ya sea mediante la desactivación directa de otras formas o mediante un fuerte estímulo) una sola forma de hacer eso (como es el caso de Fubu MVC), podría decirse que la decisión ha sido tomada por el marco , haciendo el marco obstinado.


2
2018-04-29 12:13



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

Sin embargo, como es altamente extensible, si construyes sobre él puedes convertirlo en un marco obstinado. Esto es lo que gusta de MVCContrib Sí, te dan métodos específicos para hacer las cosas, lo que significa que tienes que escribir menos código.

Esto significa que si quiere salirse de la opinión, a menudo hay más trabajo por hacer que si estuviera trabajando en la versión estándar. Este es un escenario 80/20 sin embargo. Si elige correctamente su marco de opinión obstinado, solo querrá romper con las opiniones el 20% del tiempo y será altamente productivo el otro 80% del tiempo.


1
2018-04-29 12:17



Preguntas populares