Дизайн шаблона разочарования - PullRequest
6 голосов
/ 22 февраля 2010

Я разработчик с 4-летним опытом кодирования .Net, и никогда не заботился о шаблонах проектирования в моей карьере. Недавно меня вызвали на собеседование с одним из крупнейших специалистов в области ИТ, я провел 5 раундов (решение проблем, парное программирование, логическое рассуждение, 2 раунда технического интервью) и не предложил работу.

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

Хотя я никогда не использовал большую часть шаблонов проектирования в своем кодировании, я всегда пытался реализовать основные принципы OOPS

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

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

Есть ли варианты использования для сопоставления с шаблоном .. И ваше предложение о принципах обучения?

Приветствия

Ответы [ 6 ]

15 голосов
/ 22 февраля 2010

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

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

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

Например, принцип дизайна языка JScript - «прощать мелкие ошибки». Если вы создадите объект даты для 31 ноября, он будет молча исправлять это до 1 декабря, вместо того, чтобы выдавать ошибку. Там нет "маленькая модель прощения ошибок". Создание отказоустойчивого дизайна - это принцип принципа - когда у нас есть выбор, как спроектировать конкретный элемент, мы учитываем, насколько хорошо он соответствует всем принципам - некоторые из которых противоречивы - и используйте их для руководства дизайном этой функции.

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

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

8 голосов
/ 22 февраля 2010

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

5 голосов
/ 22 февраля 2010

Даже если вы используете C #, я бы посоветовал просмотреть некоторые книги по шаблонам. Сначала будет книга GoF - Design Pattens . Затем попробуйте прочитать какую-нибудь книгу по шаблонам корпоративного дизайна. Когда вы читаете, вы узнаете (или увидите) Шаблон. Обычно это момент "ага".

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

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

Самое главное - шаблоны дают вам словарный запас для обсуждения дизайнерских идей со всей командой.

4 голосов
/ 22 февраля 2010

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

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

Если вы хотите изучить шаблоны дизайна, вы можете начать с «Head First Design Patterns» - это отличная книга.

2 голосов
/ 22 февраля 2010

Попробуйте эту книгу, она забавная и дает вам не только способ реализации шаблона, но и когда это делать.

http://www.amazon.com/First-Design-Patterns-Elisabeth-Freeman/dp/0596007124

2 голосов
/ 22 февраля 2010

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

Шаблоны проектирования (как в стиле GoF) лучше всего работают с определенным стилем написания кода. Представьте, что ваши занятия не как вещи, а как люди. Представьте, что эти люди затем общаются друг с другом, например, передавая записи, или через межведомственную почту или что-то в этом роде.

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

...