Шаблоны проектирования против EffectiveJava

#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:

Шаблон проектирования не всегда хорош. Чрезмерное использование шаблона проектирования — это плохо.

Джош Блох, однако, всегда прав. Доверьтесь ему, и вы спасены.

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