2009-04-08 6 views
1

В настоящее время я работаю над клиентом RMI, который будет разговаривать с сервером RMI (разработанный другим подразделением компании, в которой я работаю). Другая команда владеет интерфейсом, но IMO слишком сложна, и многие разные типы передаются назад и вперед, а также ненужная (IMO) сложная иерархия исключений.Принципы проектирования интерфейса RMI

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

Кто-нибудь знает какие-либо ресурсы/аргументы, которые я могу использовать, чтобы поддержать мои аргументы.

В качестве альтернативы, кто-нибудь может убедить меня в том, что я лаю неправильное дерево?

ответ

1

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

Не зная подробностей, я могу только догадываться, глядя на мой опыт. Такая ненужная сложность интерфейса часто связана с недопустимыми или недостаточными бизнес-требованиями, определенными для компонента. Если это так, в будущем ребятам из другого подразделения, вероятно, придется часто модифицировать интерфейс, пытаясь догнать новые функции, что обычно является причиной боли для пользователей этого компонента. Хотя изменения интерфейса, конечно, естественно со временем, в этом случае они могут привести к глубокой реорганизации.

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

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

Чтобы обернуть его, ключевыми аргументами для простого интерфейса являются: четкое определение бизнес-компонента, улучшенная гибкость реализации, ремонтопригодность. И помните, что все эти прибыли хороши как для разработчиков компонентов, так и для пользователей.

+0

Спасибо! Помог мне с проектом, над которым я сейчас работаю – Bigbohne

0

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

Но реквизит для вас «для борьбы с хорошей борьбой». Я предлагаю вам представить их с очищенной версией интерфейса, если у вас есть время, чтобы сделать но ничего, кроме этого, вам просто нужно отпустить его.

0

Вы получите данные, чтобы выполнить то, что вы делаете. Я согласен с unforgiven3 - это хороший бой, и вы не лаете неправильное дерево - если вы сейчас предлагаете более чистый код, без боеприпасов, он может упасть на глухие уши и, что еще хуже, может начать соревнование «моя лошадь больше, чем ваша лошадь» - не продуктивно.

Только мое предложение;

  1. Начало документирования ошибок, или любой другой пункт билет, который относится или указывает на неэффективное интерфейс

  2. начала документирования проверки кода, положить в вики (компания санкционировано вики - не получить в беду сейчас), просто зарегистрируйте его на данный момент - еще не время для принятия решения, вы просто собираете данные.

Когда у вас есть достаточное количество данных из этих 2, сделать дело на производительность программиста, который теряется или неправильно из-за неэффективных проектных решений - это очень трудно спорить, когда стоимость участвует.

надеюсь, что это поможет.

Смежные вопросы