Хотя я думаю, что не помешает познакомиться с дизайном шаблонов , я хочу убедиться, что в вашем вопросе нет смешения двух вещей. Вы сказали, что получили обратную связь, что ваша способность применять принципы принципы была слабой, и вы пришли к выводу, что вам необходимо изучить шаблоны . Но это другое.
«Шаблон проектирования» - это повторяющийся шаблон, который вы видите во многих разных доменах. Например, в архитектуре вы видите рисунок «внутреннего двора» в самых разных видах зданий. В программировании вы видите шаблоны типа «класс, который может иметь только один экземпляр» или «небольшой кусок кода, который склеивает это с этим» во многих различных типах программ.
Но принципы не являются шаблонами. Шаблон - это особый повторяющийся вид дизайна; принцип - это идея, которая лежит в основе того, что делает проект хорошим для пользователей проектируемого артефакта.
Например, принцип дизайна языка JScript - «прощать мелкие ошибки». Если вы создадите объект даты для 31 ноября, он будет молча исправлять это до 1 декабря, вместо того, чтобы выдавать ошибку. Там нет "маленькая модель прощения ошибок". Создание отказоустойчивого дизайна - это принцип принципа - когда у нас есть выбор, как спроектировать конкретный элемент, мы учитываем, насколько хорошо он соответствует всем принципам - некоторые из которых противоречивы - и используйте их для руководства дизайном этой функции.
Это , а не принцип дизайна C #; на самом деле, противоположность принципа проектирования C #. Принципы дизайна не являются хорошими или плохими сами по себе; они являются руководством для того, что делает дизайн хорошим для целевого набора пользователей .
Написание кода без понимания шаблонов означает отсутствие инструментов в вашем наборе инструментов, которые облегчают выполнение общих задач. Написание кода без понимания принципов проектирования означает написание кода, который непоследователен, труден для понимания и противоречит потребностям его пользователей. Оба важны, но они очень разные.