Сначала прочитайте рефакторинг (сделанный известным Мартином Фаулером).
Изучив рефакторинг, вы сможете научиться писать код, который легко изменить, прочитать и упростить.
Я бы посоветовал не изучать шаблоны проектирования, пока вы сначала не поймете рефакторинг. С помощью рефакторинга вы можете понять темы чистого и читабельного кода. Как только вы поймете, что такое рефакторинг, читайте шаблоны проектирования. Шаблоны проектирования очень полезны, когда вам нужно написать более сложные проекты.