2010-02-27 2 views
4

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

+0

+1 См. Также http://stackoverflow.com/questions/427659/going-bananas-with-loose-coupling-and-dependency-injection –

ответ

0

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

Я могу дать вам несколько академических ссылок на эту тему только в случае, если вы заинтересованы: (ред.)

  • Genero, М., Piattini, М., Калеро, С.: Metrics для концептуальных моделей программного обеспечения. Императорский колледж-пресс, Лондон, Великобритания (2005)
  • Шеховцов В.А. О концептуализации качества. документ, представленный на Dagstuhl семинара по концептуальному моделированию, 27-30 апреля 2008 (препринт на сайте конференции) (2008)
0

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

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

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

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

+0

Ну, мы * не * "в конце" эволюции , :-) Есть еще «ошибки», и эволюция все еще работает ... Я хочу сказать ... что вы имеете в виду? – CesarGon

+0

Дело в том, что многие дизайнеры решают налить кухонную раковину в свои классы, и в итоге они становятся слишком зернистыми. IE, grain_of_sand.build_castle() – dar7yl

+0

Я никогда не утверждал, что все ошибки были вне генетики. У Natural Selection было много времени, чтобы отсеять вредные ошибки и маскировать не очень критические. – dar7yl

2

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

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

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