#java #design-patterns
#java #шаблоны проектирования
Вопрос:
Я студент, стремящийся улучшить свои навыки Java и общего программирования. Я знаком с некоторыми базовыми шаблонами проектирования.
В моем распоряжении есть две книги «Сначала о шаблонах проектирования» и «Эффективная Java» (Джош Блох), обе направлены на пропаганду хороших методов программирования.
Однако я в замешательстве относительно того, «как я должен читать тексты, чтобы это имело наибольший смысл?»
Насколько я понимаю, шаблоны проектирования — это основы, а в effective java есть некоторые дополнительные методы в дополнение к общим шаблонам проектирования.
Как правильно рассматривать сценарий в целом?
Комментарии:
1. Джефф говорит … codinghorror.com/blog/2005/09/head-first-design-patterns.html
Ответ №1:
Вам просто нужно накопить свои знания. Отчасти это можно сделать, прочитав хорошие книги, из которых книга Джоша Блоха — очень хорошая книга. Отчасти это достигается за счет выполнения задач по программированию в свободное время и наблюдения за блогами и другими веб-сайтами, такими как stackoverflow. Хотя некоторые из них вы получите через другой практический опыт, то есть на работе.
Эти вещи требуют времени и приходят с опытом. Просто наслаждайтесь языком и погрузитесь в него. Шаблоны — это не начало и конец всего языка, хотя они являются частью эффективного инструментария. Лучше полностью понимать язык, тогда вы увидите, как шаблоны проектирования могут помочь в решении распространенных проблем и часто решают их лучше. Но определенно не стоит зацикливаться на шаблонах, пока вы не будете знать язык достаточно хорошо. Если на самом деле, вообще не зацикливайтесь на шаблонах!
Я бы сказал, что книга Джоша Блоха — лучшая книга, на которой стоит сосредоточиться в первую очередь — она превосходна и знакомит вас со всеми ключевыми понятиями (распространенные методы, такие как equals и hashcode, перечисления, параллелизм), а также знакомит с шаблонами, от которых вы будете получать ежедневные выгоды, например, Builder pattern.
Комментарии:
1. Спасибо! Сначала я сосредоточусь на эффективной Java и начну с нее.
Ответ №2:
Однако я в замешательстве относительно того, «как я должен читать тексты, чтобы это имело наибольший смысл?»
Мой единственный совет — избегать излишеств и чрезмерной разработки. Некоторые опытные программисты на ООП (и Java), которые изучают шаблоны проектирования, принимая их за Библию, часто создают нечеткий и бесполезный код. Это кажется противоречивым, но если вы подумаете об этом, это не так.
Когда целью программирования больше не является решение проблемы, создание полезных инструментов и получение измеримых результатов, а становится демонстрация чьей-то огромной изощренности, сообразительности, а иногда и нахального эгоизма, тогда код становится просто набором хитрых мозговых волн, бесполезных для всех, за исключением того, кто написал код и ему приятно смотреть на своего сумасшедшего «белого слона».
Много раз я видел их бесполезные приложения. Больше всего злоупотребляют шаблоном factory, который на данный момент довольно модный и фактически используется повсюду, как приправа для еды.
Много раз я видел разрастание классов и интерфейсов, бесполезные обобщения, которые бессмысленны: в некоторых случаях я видел пакеты с 2 полезными классами и 10 интерфейсами и / или абстрактными классами. Я тоже чувствую необходимость сделать код «универсальным» и «повторно используемым», но должен быть предел.
Много раз я видел «религиозные войны» по этим темам.
Прочитайте все книги, которые вы хотите, и возьмите из них то, что вам нужно. Но после этого напишите разумный код. Пишите полезные вещи, это первоначальная причина, по которой вы начали программировать.
Комментарии:
1. Ваш ответ — одна из самых замечательных вещей, которые я прочитал за последнее время. 🙂
Ответ №3:
Две книги дополняют друг друга. Эффективная Java — это лучшие практики в написании кода Java. Шаблоны проектирования описывают набор стандартных решений распространенных программных проблем. Шаблоны проектирования на самом деле не зависят от языка, в то время как Effective Java, очевидно, ориентирована на язык java.
Но мой общий подход — «всегда соглашаться с Джошем Блохом» (если только Джон Скит с ним не согласен)
Комментарии:
1. Я согласен, шаблоны проектирования не зависят от языка, и мы, безусловно, написали шаблоны проектирования Head First с этим намерением, хотя мы используем Java для демонстрации шаблонов. Мы также включили множество базовых «лучших практик» для программирования. Книга Джоша Блоха очень хороша, так что используйте обе!
Ответ №4:
Шаблоны программирования — это лучшие практики. Их следует использовать экономно. Каждый шаблон проектирования пытается обработать некоторую форму изменения.
Например, шаблон стратегии решает вариацию реализации, которая в основном является причудливым способом сказать, что это метод plug and play.
Шаблоны приводят к гибкому коду, но они создают большое количество дополнительной сложности в коде.
Может быть, вы хотите взять книгу Applied Java Patterns рядом с теми книгами, которые у вас уже есть. Она написана Олавом Маарсеном и Стивеном Стелтингом. Также корнем всех шаблонов является Gang of Four, возможно, вы захотите использовать их книгу и в качестве ссылки.
Ответ №5:
Шаблон проектирования не всегда хорош. Чрезмерное использование шаблона проектирования — это плохо.
Джош Блох, однако, всегда прав. Доверьтесь ему, и вы спасены.
Забудьте шаблон проектирования. В книге Джоша Блоха приведены все необходимые шаблоны.