Мои два цента за такой и старый вопрос
Некоторые люди уже упоминали, практика и рефакторинг. Я считаю, что правильный порядок изучения шаблонов таков:
- Изучаем тест-ориентированную разработку (TDD)
- Научитесь рефакторингу
- Выучить шаблоны
Большинство людей игнорируют 1, многие считают, что они могут сделать 2, и почти все идут прямо на 3.
Для меня ключом к совершенствованию моих программных навыков было изучение TDD. Это может быть долгое время мучительного и медленного кодирования, но написание первых тестов, безусловно, заставляет вас много думать о вашем коде. Если классу нужно слишком много шаблонов или он легко ломается, вы начинаете замечать неприятные запахи довольно быстро
Основное преимущество TDD заключается в том, что вы теряете страх перед рефакторингом своего кода и заставляете вас писать классы, которые являются очень независимыми и связными. Без хорошего набора тестов просто слишком больно трогать то, что не сломано. С сетью безопасности вы действительно будете в решительных изменениях в своем коде. Это тот момент, когда вы действительно можете начать учиться на практике.
Теперь наступает момент, когда вы должны читать книги о шаблонах, и, на мой взгляд, это слишком большая трата времени на то, чтобы слишком стараться. Я очень хорошо понял шаблоны только после того, как заметил, что сделал что-то подобное, или я мог применить это к существующему коду. Без тестов безопасности или привычек рефакторинга я бы дождался нового проекта. Проблема использования шаблонов в новом проекте заключается в том, что вы не видите, как они влияют или изменяют рабочий код. Я понял программный паттерн только после того, как преобразовал свой код в один из них, никогда, когда я ввел новый код в свой код.