Какой шаблон проектирования лучше всего подходит для итеративной разработки? - PullRequest
3 голосов
/ 23 сентября 2008

Существует ли такая вещь, как использование наиболее предпочтительного шаблона проектирования для создания приложений в TDD или итеративном режиме?

Ответы [ 5 ]

7 голосов
/ 23 сентября 2008

Я думаю, что вопрос можно переписать, так что это имеет больше смысла в этих словах:

«Какие архитектурные шаблоны и стратегии полезны для достижения гибкости при использовании тестовой стратегии и стратегии постепенного развития?»

Мой ответ будет таким: шаблоны, которые помогут вам отделить ваши предложения и компоненты, например:

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

  • Фасады - Помогает изолировать компоненты, обеспечивая четко определенные интерфейсы для взаимодействия между ними, уменьшая сцепление.

  • Фабрики и другие шаблоны создания - Они дают вам гибкость в разделах вашего кода, отвечающих за создание экземпляров объектов.

Также помните, что одна из мантр инкрементальной и итеративной разработки - это «Делай самое простое, что могло бы сработать» . Не переусердствуйте.

Имеет ли смысл в соответствии с тем, что вы спросили?

4 голосов
/ 23 сентября 2008

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

Однако вы можете подчеркнуть некоторые особенности архитектуры вашего приложения:

  • Сделать вещи чрезвычайно модульными. Объёмная слабая муфта.
  • Определить четкие концептуальные границы между модулями. Под концептуальным я имею в виду, что для начала все должно быть ясно, чувствовать себя естественно. Случайный программист, спросивший об этом, должен ответить: «Ух ты, очевидно, как ты это сделал!».
  • Начните с малого . Не пытайтесь создавать ZOMG-это-будет-лучше-и-самый-универсальный-класс-библиотека-и-программа-и-что угодно. Заставьте вещи работать, а затем расширяйте их, но только при необходимости.
  • Убедите себя в том, что ЯГНИ (Вам это не нужно). Не делай то, что не уверен, что должен делать. Это не означает промедление или что-то. Это значит не делать вещи, потому что «я не знаю, это может быть полезно в будущем», «это технически причудливо», «я включу это на всякий случай».
  • DRY - не повторяйте себя. Убедитесь, что у вас нет проблем с дублированием кода. Подумайте о генераторах кода, хороших абстракциях и продуктивной коммуникации в команде.
2 голосов
/ 23 сентября 2008

Я не уверен, что это значимый вопрос. Но я не позволю этому остановить меня ...

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

Редактировать: Но если вы хотите окончательный ответ, то Бридж. Этот подходит. Или посетитель, мне тоже нравится. Или большинство из тех, которые начинаются с "F". :)

0 голосов
/ 23 сентября 2008

Шаблоны проектирования - это инструменты, помогающие решить определенные типы проблем. Использование шаблонов регулируется проблемами, определяемыми объемом требований, а не методологией разработки.

0 голосов
/ 23 сентября 2008

Для разработки используйте динамический язык, такой как Python или Ruby: вам не нужно бороться со многими проблемами, с которыми сталкиваются другие языки, в первую очередь являющимися причиной "шаблонов проектирования".

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

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