example - sql connection java
¿Tiene algún buen ejemplo de "arquitectura por el bien de la arquitectura"? (11)
¡En cada lugar en el que he trabajado durante los últimos cinco años!
Mis títulos oficiales de trabajo han contenido "arquitecto" durante los últimos seis años, pero en un día de mal humor soy más un anti-arquitecto, en días menos gruñones soy un "arquitecto minimalista".
Si no hay una buena razón obvia y obvia para que un componente, marco o característica esté allí, ¡entonces lo dejo!
En las ocasiones en que he sido invalidado, las características arquitectónicas extra eclesiales siempre han resultado ser la mayor área problemática.
Solo escuché el podcast de esta semana y pensé que sería bueno agrupar algunas de sus experiencias donde ha visto que el lado de la arquitectura del diseño domina las cosas un poco más de lo que debería.
A menudo, Java obtiene una mala prensa en este sentido, y una prensa cada vez más mala a medida que aumenta la complejidad percibida de Java EE. Mi experiencia con Java en comparación con el gráfico de tiempo se hunde significativamente después de 2004, por lo que no me siento capacitado para comentar.
Mi experiencia más reciente es con un arquitecto que intenta desesperadamente representar con precisión un modelo de objetos en un conjunto de tablas de bases de datos (relacionales) (pasó a ser Oracle). El resultado es un esquema de base de datos que es imposible de consultar de manera eficiente sin primero preunir un conjunto de tablas (en vistas materializadas).
Esto fue en Reddit recientemente, con una buena broma "yo dawg".
Presentamos: RequestProcessorFactoryFactory
Discusión de Reddit aquí
La empresa para la que trabajo produce una aplicación que tiene una base de datos back-end de SQL Server. ¡Una de las tablas principales requiere unirse a sí misma seis veces antes de obtener datos significativos de ella!
Lo que más me molesta son los "arquitectos" que no entienden los conceptos relacionales y tratan de hacer que las cosas funcionen de forma objetiva cuando las bases de datos funcionan mejor en una configuración determinada y deben diseñarse para ser utilizadas de esa manera. (Las bases de datos no deben ser diseñadas por programadores orientados a objetos convertidos en arquitectos, deben ser diseñados por especialistas en bases de datos). Y arquitectos que piensan que es más "Elegante" colocar varias cosas en una tabla base principal (sobregeneralización) y luego terminar con más de 100 claves externas a esa tabla y cada consulta que hace referencia a ella y una gran pesadilla de rendimiento (así como un proceso ridículo para borrar un registro).
Mi favorito es "auto-arquitectura". Básicamente, solo un conjunto de reglas que, si sigues la arquitectura, encajan correctamente ... aparentemente.
De modo que esto da como resultado que cada objeto tenga una interfaz, independientemente de si necesita un resumen y una fábrica (¡nada nuevo () para usted!) Para CADA servicio único ... suspira .
No.
¿No debería la arquitectura estar subordinada a los requisitos?
Oh si !
En mi último trabajo, trabajando en un proyecto bastante grande, contamos con un equipo de arquitectura que implementó todo el marco que utilizamos. Diseñaron un ORM personalizado (circa 2000, Hibernate no era tan ubicuo como hoy) y un marco RCP personalizado basado en Swing.
El ORM no era tan malo. Estaban demasiado preocupados por las dependencias circulares, por lo que en algunos casos pasamos un mal momento para expresar nuestro modelo de dominio, ya que el negocio requería dependencias circulares (los objetos comerciales podían fluir en ambos sentidos entre diferentes unidades administrativas).
El marco Swing fue un infierno. Intentaron implementar un modelo de componentes, con algo parecido a un controlador jerárquico. Se veía muy bien en papel: puede tener componentes que puedan reutilizarse. El modelo, las vistas y el controlador estaban claramente separados. Pero, en realidad, el marco no proporcionaba suficiente flexibilidad, por lo que tuvimos que mantener referencias a JComboBox para obtener los datos a través de las capas de abstracción. Tuvimos que escribir de 4 a 5 clases por cada pequeña pieza de IU. En algunos casos, llevó días agregar una casilla de verificación en un formulario. La depuración fue horrible ya que el flujo del proceso estaba pasando por 15-20 clases para cada operación simple. Sorprendentemente, las actuaciones estuvieron bien.
Lo peor, ¡cada componente de Swing estaba envuelto en una capa de abstracción "en caso de que queramos cambiar el kit de herramientas de UI"!
Si no ha leído el artículo de Joel sobre Architecture Astronauts (el Live Mesh ), lo recomiendo: es una buena lectura sobre este tema.
Siempre pensé que la implementación de Hello World también era buena.
Un amigo mío trabaja en una base de datos a gran escala donde todo tiene que descender de la clase personalizada "Cualquiera"
/estremecimiento
Una muy buena parábola apareció en el grupo de discusión de Joel sobre este tema hace unos años. La historia se llama Why I Hate Frameworks .