Определите, насколько детализированным должен быть интерфейс?

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


person John K    schedule 27.02.2010    source источник
comment
+1 См. Также stackoverflow.com/questions/427659/   -  person Wim Coenen    schedule 27.02.2010


Ответы (3)


Я только что стал соавтором статьи о детализации (размере) компонентов, и один из наших выводов состоит в том, что не существует простого способа определить, «что правильно». Так что нет стандартного набора рекомендаций.

Я могу дать вам несколько академических справок по этой теме, если вам интересно:

  • Дженеро, М., Пиаттини, М., Калеро, К. (ред.): Метрики для концептуальных моделей программного обеспечения. Imperial College Press, Лондон, Великобритания (2005)
  • Шеховцов В.А. О концептуализации качества. доклад, представленный на семинаре по концептуальному моделированию в Дагштуле 27-30 апреля 2008 г. (препринт на веб-сайте конференции) (2008 г.)
person CesarGon    schedule 27.02.2010

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

Рэй Хьюстон написал об этом хорошую статью (глядя на поставщика членства) здесь.

person Kane    schedule 27.02.2010

Рассмотрим геном человека как класс.

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

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

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

person dar7yl    schedule 27.02.2010
comment
Что ж, мы не в конце эволюции. :-) Есть еще ошибки, и эволюция все еще работает ... Я хочу сказать ... что вы имеете в виду? - person CesarGon; 27.02.2010
comment
Дело в том, что многие дизайнеры решают добавить кухонную мойку в свои классы, и в итоге они становятся слишком детализированными. IE, Grain_of_sand.build_castle () - person dar7yl; 27.02.2010
comment
Я никогда не утверждал, что все ошибки вызваны генетикой. У Natural Selection было достаточно времени, чтобы отсеять вредоносные ошибки и замаскировать не очень важные. - person dar7yl; 27.02.2010
comment
@ dar7yl: ваш пример с песчинкой содержит проблему не детализации, а ответственности. Скептик не знает, как построить замок. Это не имеет ничего общего с детализацией. Извините, но я пока не могу понять вашу точку зрения. Что касается другой области вещей, и после 25 лет изучения биологии я никогда не читал и не слышал никаких доказательств того, что количество ошибок в жизни, как мы ее знаем сегодня, меньше, чем было раньше. Это постоянная гонка! :-) - person CesarGon; 28.02.2010
comment
Вы этого не понимаете. Мой пример песчинки - это аналогия (метафора) реальной ситуации, в которой дизайнер решил включить функциональность замка в каждую песчинку, которая состоит из каждого кирпича в каждой стене замка. то есть, выбрав любое конкретное зерно, вы можете отследить иерархию до любого компонента. Проблема с этим подходом заключается в том, что объем выполняемых операций превышает ресурсы системы. - person dar7yl; 01.03.2010
comment
Если вы правильно прочитали мой пост, то увидите, что я никогда не утверждал, что количество ошибок меньше. Результатом естественного отбора является то, что вредные насекомые, как правило, не могут воспроизводиться, что приводит к исчезновению этого вида. Не существует бога-охотника за ошибками, выполняющего обход генетического кода. Эволюция - явление пассивное. Он все еще не работает; это просто случается. - person dar7yl; 01.03.2010