У вас есть хорошие примеры "архитектуры ради архитектуры"? - PullRequest
8 голосов
/ 23 января 2009

Просто слушая подкаст на этой неделе и подумал, что было бы неплохо сгруппировать некоторые из ваших впечатлений, когда вы видели, как "архитектурная" сторона дизайна доминирует над вещами немного больше, чем следовало бы.

Java часто получает плохую прессу в этом отношении, и все более и более плохую прессу, поскольку воспринимаемая сложность Java EE увеличивается. Мой опыт работы с Java на фоне временного графика значительно упал после 2004 года, поэтому я не чувствую себя компетентным комментировать.

Мой последний опыт связан с тем, что архитектор отчаянно пытался точно представить объектную модель в наборе (реляционных) таблиц базы данных (это был Oracle). В результате получается схема базы данных, которую невозможно эффективно запросить без предварительного предварительного объединения нескольких таблиц (в материализованных представлениях).

Ответы [ 11 ]

12 голосов
/ 23 января 2009

О, да!

В моей последней работе, при работе над довольно крупным проектом, у нас была команда архитекторов, которая создала всю структуру, которую мы использовали. Они разработали собственный ORM (около 2000 года, Hibernate не был столь же повсеместным, как сегодня) и пользовательскую среду RCP на основе Swing.

ОРМ не так уж и плох. Они были просто чрезмерно обеспокоены циклическими зависимостями, поэтому в некоторых случаях у нас было довольно плохое время для выражения нашей модели предметной области, поскольку бизнесу требовались циклические зависимости (бизнес-объекты могли проходить в обоих направлениях между различными административными единицами).

Каркас Swing был адом. Они пытались реализовать компонентную модель с чем-то похожим на иерархический контроллер. На бумаге это выглядело очень хорошо: вы можете иметь компонент, который можно использовать повторно. Модель, взгляды и контроллер были четко разделены. Но на самом деле инфраструктура не обеспечивала достаточной гибкости, поэтому нам пришлось сохранять ссылки на JComboBox, чтобы получить данные через уровни абстракции. Мы должны были написать 4-5 классов для каждого маленького кусочка пользовательского интерфейса. В некоторых случаях потребовалось несколько дней, чтобы добавить флажок в форму. Отладка была ужасной, поскольку процесс проходил через 15-20 классов для каждой простой операции. Удивительно, но спектакли были в порядке.

Хуже всего то, что каждый компонент Swing был обернут в слой абстракции "на случай, если мы захотим изменить инструментарий пользовательского интерфейса"!

7 голосов
/ 23 января 2009

Я всегда думал, Эта реализация Hello World тоже хороша.

7 голосов
/ 23 января 2009

Несколько лет назад в дискуссионной группе Джоэла появилась действительно хорошая притча. История называется Почему я ненавижу фреймворки .

6 голосов
/ 23 января 2009

В каждом месте, где я работал последние пять лет!

В моих официальных должностях за последние шесть лет содержалось слово «архитектор», но в сердитый день я больше против архитектора, в менее сердитые дни я «минималистский архитектор».

Если нет какой-либо веской и очевидной причины присутствия компонента, инфраструктуры или функции, тогда я опускаю ее!

В тех случаях, когда меня отвергали, дополнительные ненужные архитектурные особенности всегда оказывались самой большой проблемной областью.

5 голосов
/ 23 января 2009

Это было недавно на Reddit, с хорошей шуткой "йо дауг".

Представляем: RequestProcessorFactoryFactory

Reddit обсуждение здесь

5 голосов
/ 23 января 2009

Компания, в которой я работаю, создает приложение, имеющее базу данных SQL Server. Одна из основных таблиц требует объединения в себя шесть раз, прежде чем извлечь из нее какие-либо значимые данные!

3 голосов
/ 23 января 2009

Мой друг работает в крупномасштабной БД, где все должно происходить из пользовательского класса "Любой"

/ Дрожь

2 голосов
/ 23 января 2009

Если вы еще не читали статью Джоэла об астронавтах по архитектуре ( Live Mesh one ), я рекомендую ее - это хорошая статья на эту тему.

0 голосов
/ 23 января 2009

Моя любимая мозоль - «архитекторы», которые не понимают реляционных концепций и пытаются заставить вещи работать объектным способом, когда базы данных работают лучше на основе множеств и должны быть спроектированы для такого использования. (Базы данных не должны разрабатываться объектно-ориентированными программистами, ставшими архитекторами, они должны разрабатываться специалистами по базам данных) И архитекторами, которые считают более «элегантным» поместить несколько вещей в одну основную базовую таблицу (избыточная генерализация), а затем получить более 100 внешние ключи к этой таблице и все запросы, ссылающиеся на нее, и большой кошмар производительности (а также нелепый процесс удаления записи).

0 голосов
/ 23 января 2009

номер

Разве архитектура не должна подчиняться требованиям?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...