интерфейсов. Должны ли конкретные классы избегать вызова других конкретных классов, кроме объектов данных?
спросил
Изменено 10 лет, 7 месяцев назад
Просмотрено 823 раза
В Приложении A к Искусство модульного тестирования Рой Ошеров, говоря о способах написания тестируемого кода с самого начала, говорит:
Абстрактный класс не должен вызывать конкретные классы, а конкретные классы также не должны вызывать конкретные классы, если только они не являются объектами данных (объектами, содержащими данные, без поведения). (259)
Первая половина предложения просто D зависимость Инверсия от SOLID. Вторая половина мне кажется довольно экстремальной. Это означает, что каждый раз, когда я собираюсь написать класс, который не является простой структурой данных, а это большинство классов, я должен сначала написать интерфейс или абстрактный класс, верно? Стоит ли заходить так далеко в определении абстрактных классов и интерфейсов? Может ли кто-нибудь объяснить, почему более подробно, или опровергнуть это, несмотря на его пользу для тестируемости?
- интерфейсы
- абстракция
- твердость
Это означает, что каждый раз, когда я собираюсь написать класс, который не является простой структурой данных, а это большинство классов, я должен сначала написать интерфейс или абстрактный класс, верно?
Ага.
Стоит ли заходить так далеко в определении абстрактных классов и интерфейсов?
Нет, но вы должны ошибаться в сторону большего количества интерфейсов, чем меньшего.
Может ли кто-нибудь более подробно объяснить, почему, или опровергнуть его, несмотря на его пользу для тестируемости?
Я бы сказал, что можно использовать конкретные классы напрямую, если эти конкретные классы не являются частью интерфейса , который реализует/предоставляет потребитель. Как только они становятся частью общедоступного интерфейса, а не реализацией модуля, их нужно либо абстрагировать, либо они должны быть достаточно стабильными, чтобы вы были уверены этот код не нужно будет изменять или делать полиморфным.
Я не думаю, что он имеет в виду, что вы обязательно должны написать абстрактный класс для каждого класса. Я думаю, он имеет в виду, что должен быть способ заменить тестовый класс на конкретный класс. Например, это можно сделать с помощью контейнера DI.
Обычно стоит зайти так далеко, потому что вы обычно собираетесь написать тест, который заменяет тестовый класс на конкретный класс, но если вам не нужен тест, вам не нужно беспокоиться.
ИМХО, более прагматичный подход — не думать «классами» при разделении частей вашей системы для лучшей тестируемости, а думать «компонентами» — более крупными функциональными единицами с четко определенной задачей, которая может состоять из одного или нескольких классы. Если один компонент нуждается в обслуживании другого, то он не должен использовать его напрямую, а только через интерфейс. То, как выглядит этот интерфейс, может сильно зависеть от компонентов, он может использовать определение языка интерфейса 9.0060 на вашем языке программирования, это может быть просто функция или обратный вызов, он может использовать потоки или какие-то «объекты данных».
По моему опыту, хорошей идеей для тестируемости также является разработка интерфейсов ваших компонентов таким образом, чтобы вы могли обеспечивать все входные и выходные данные в памяти.
Например, у вас есть компонент A, который использует объекты вашей базы данных в качестве входных и выходных данных, и компонент B, который полагается на выходные данные A и также использует базу данных. Затем предоставьте способ, которым A создает объекты данных только в памяти, и способ, которым B может принимать эти объекты от A также в памяти, без какого-либо взаимодействия с базой данных. Это значительно упрощает написание автоматических тестов для A и B (и тесты выполняются намного быстрее).Входить в эти крайности стоит только в том случае, если вы пьете Kool-Aid для модульного тестирования/TDD. Чтобы упростить модульное тестирование, необходимо следовать определенным проектам. Некоторые из этих проектов идут вразрез с традиционными концепциями объектно-ориентированного проектирования. Вам решать, перевешивают ли потенциальные выгоды от модульных тестов затраты на некоторые неправильные проектные решения. Модульные тесты далеки от серебряной пули, которую многие пытаются представить, но это нынешняя причуда дизайна.
Банда четырех также подразумевает, что абстрактный класс или интерфейс должен быть определен для каждого конкретного класса. Сразу после внесения в интерфейс принципа Программы, а не реализации — и, таким образом, как прямое следствие этого — говорят (18):
Не объявляйте переменные экземплярами определенных конкретных классов.
Это невозможно, если для каждого конкретного создаваемого класса не существует абстрактного класса или интерфейса.
Таким образом, может показаться, что это тот случай, когда разработка для тестируемости продвигает то, что уже считалось хорошим объектно-ориентированным дизайном. Учитывая, что Design Patterns вышел почти два десятилетия назад, я бы сказал, что согласие «Банды четырех» с Ошерове является признаком того, что все это модульное тестирование не вызвало у него головную боль. Скорее, он просто продвигает хороший дизайн.
Design Patterns даже сейчас является одной из самых уважаемых книг по объектно-ориентированному проектированию. Так что, хотя, как и в случае с другими принципами программирования, нет причин придерживаться совета Ошерова с законничеством, которое теряет место в других аспектах хорошего дизайна, таких как KISS, его совет, очевидно, следует традиции уважаемой мысли об объектно-ориентированном программировании. дизайн.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google Зарегистрироваться через Facebook Зарегистрируйтесь, используя электронную почту и парольОпубликовать как гость
Электронная почтаТребуется, но никогда не отображается
Опубликовать как гость
Электронная почтаТребуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.
Гор Проектные Компании | Школа Бетонного Дизайна
Гор Проектные Компании | Школа Бетонного ДизайнаКак говорится, «прилив поднимает все лодки». Вот почему наша миссия состоит в том, чтобы поднять уровень дизайна, мастерства и наглядности высококачественного бетона. Чтобы бетон был признан лучшим ремесленным материалом, он должен быть обработан на уровне мастера. Обучая профессионалов и тех, кто только осваивает ремесло, мы помогаем мастерам полностью раскрыть свой потенциал и принести пользу отрасли в целом, повышая при этом ценность производимого бетона.
С 2005 года более 1400 мастеров прошли обучение в Школе дизайна бетона (C.D.S.). За это время мы заработали отличную репутацию в отрасли, поэтому так много людей доверили нам обучение искусству высококлассного бетонного дизайна. Что отличает нас, так это опыт , и мы приглашаем вас испытать разницу. Запишитесь на практический семинар сегодня.
Вы будете учиться у мастеров, которые в настоящее время создают изделия из бетона на заказ для элитной клиентуры. Люди, которые занимаются своим делом ежедневно, научат вас тем же методам, которые используются для ведения успешного, удостоенного наград бетонного бизнеса. Эти семинары предлагают обучение по новейшим методам и знаниям в бетонном дизайне.
К.Д.С. IS A GORE DESIGN COMPANYЕсли вы собираетесь потратить деньги на уроки бетона, разве не должен ли кто-то, кто в настоящее время зарабатывает на жизнь проектированием и изготовлением бетона, преподавать его? Нашей целью всегда было предложить нашим посетителям проверенные временем навыки от квалифицированных инструкторов, которые успешно управляют собственным бизнесом . Наши инструкторы изобретают и осваивают уникальные подходы в течение многих лет проб и ошибок - клиентский проект за клиентским проектом. В этом ценность того, что они приносят к столу и чему учат каждого участника наших семинаров.
Что отличает наше обучение, так это актуальность нашей информации. Положение школы в соответствии с GDCos. зонтик позволяет нам дать вам актуальные, реальные знания о том, что нужно, чтобы добиться успеха в этой профессии сегодня .
Каждый день мы …
- Цитата Клиентские проекты
- Mix and Cast Бетон
- Запачкать руки
- Отделка и уплотнение
- Упаковать, отправить и доставить Продукты
И мы покажем вам, как мы это делаем, используя продукты и методы, доказавшие свою эффективность.
НАВЫКИНаши мастерские в C.D.S. сосредоточены на следующих навыках, которые помогут вам достичь уровня качества, ожидаемого в высшем эшелоне архитектуры и дизайна интерьера:
- Дизайн один и тот же кусок дважды. Мы также обсудим способы, с помощью которых вы можете разработать и улучшить свой индивидуальный и востребованный на рынке стиль.
- Инструменты Оборудование, используемое для производства бетона, быстро меняется. Наши мастерские включают в себя самые передовые инструменты в отрасли и лучшие инструменты для работы.
- Материалы То, что мы используем для работы с клиентами сегодня, отличается от того, что мы использовали год назад. Мы рассмотрим все материалы, доступные в настоящее время, и покажем вам, какие из них производят бетон с лучшими характеристиками (СОВЕТ – это то, что мы используем).
- Метод Первостепенное значение в вашем обучении имеет изучение техники изготовления качественного высококачественного индивидуального бетона. Никакая другая учебная программа не предлагает более практических идей и реального опыта использования этих методов.
- Деловая практика Изучите проверенные процессы успешного ведения конкретного бизнеса от людей, реально управляющих успешным конкретным бизнесом.
КОНТАКТЫ
КОНСАЛТИНГ
Частные консультации доступны для индивидуального обучения или помощи в проекте, над которым вы работаете. Консультации — отличный вариант для частных лиц или компаний, которые не могут посетить семинар Concrete Design School или которым требуется более продвинутое руководство. Информация ориентирована конкретно на тему (темы), которые требуют внимания.
Примеры предметов включают, но не ограничиваются: традиционное формование ткани, формование ткани FLOW, формование надутой ткани, стеклопластик, пост-напряженный бетон, изготовление резиновых форм, проектирование мебели, полировка и герметизация бетонных полов и накладок, бетонные полы кислотное окрашивание, использование насосов для крупномасштабного производства бетона, обрешетка, планировка магазина, а также продажи и маркетинг.
Консультации можно проводить в нашей студии в Эврика-Спрингс, Арканзас, Харрикейн-Миллс, Теннесси или Мерфи, Калифорния, или мы можем приехать к вам. Мы предлагаем консультационные услуги по всему миру, мы выезжаем в любое место.
C O S T
Мы адаптируем частные консультации для удовлетворения ваших потребностей. Стоимость обучения составляет 1950 долларов США в день на одного инструктора плюс транспортные расходы, если обучение проводится в вашем учреждении.
ЮРИДИЧЕСКАЯ СЛУЖБА
Все участники должны будут подписать соглашение о неразглашении информации с санкциями за несанкционированное раскрытие материала. Методы и формулы, преподаваемые во время консультации, не могут быть опубликованы, переданы в эфир, переписаны или распространены в любой форме.
Свяжитесь с нами, чтобы получить персональное предложение
Школа проектирования бетона
Школа проектирования бетонаявляется продолжением и развитием учебных семинаров, которые Брэндон Гор из Gore Design Co. и Hard Goods начал в 2005 году. раковины и столешницы. Обучение тогда было недоступно, все было методом проб и ошибок.
- 2005 В октябре 2005 года Брэндон провел первое в мире занятие по созданию бетонных раковин и столешниц с использованием стеклопластика.
- 2008 В 2006 году Брэндон начал экспериментировать с использованием ткани для изготовления раковин. С усилением интеграции GFRC бетон и методы его формования быстро развивались. Формование ткани по-прежнему является передовым, но в 2008 году это было неслыханно. Брэндон Гор провел первое занятие по этому предмету в ноябре 2008 года.
- 2011 Методы формирования ткани продолжали развиваться, и в августе 2011 года Брэндон Гор провел первый курс по новому типу формирования ткани, который он придумал «Формирование ткани FLOW».
- 2014 Дасти Бейкер разработал методы для создания своей фирменной рустикальной отделки под названием «Dusty-Crete». В конце 2015 года Дасти провел первый семинар, в котором подробно рассказал о своих коммерческих секретах.
- 2015 Брэндон Гор провел первый в отрасли курс по бетону Мебель Дизайн в феврале 2015 года.
Наше обучение ведется стабильными темпами с 2005 года. За это время совершенствовались методики, материалы, инструменты и методы их преподавания. С открытием Школы бетонного дизайна мы надеемся продолжить продвижение изделий из бетона. Мы будем делать это с помощью наших отраслевых партнеров, младших тренеров и постоянного прогресса передового опыта, который может быть достигнут только благодаря упорной работе, реальному мировому опыту и инновациям.