Читать «Рефакторинг с использованием шаблонов» онлайн - страница 4

Джошуа Кериевски

Replace One/Many Distinctions with CompositeМотивацияМеханикаПримерReplace Hard-Coded Notifications with ObserverМотивацияМеханикаПримерUnify Interfaces with AdapterМотивацияМеханикаПримерExtract AdapterМотивацияМеханикаПримерВариацииReplace Implicit Language with InterpreterМотивацияМеханикаПример 258259261262271271273274283284285287295296298298306307308310311
Глава 9. Защита кода 323
Replace Type Code with ClassМотивацияМеханикаПримерLimit Instantiation with SingletonМотивацияМеханикаПримерIntroduce Null ObjectМотивацияМеханикаПример 324325326328335335336337340341343344

Предметный указатель

394

Предисловие

В книге Design Patterns описано несколько способов использования шаблонов. Одни долго обдумывают использование шаблонов, прежде чем написать какой-нибудь код, в то время как другие добавляют шаблон лишь тогда, когда уже написано достаточно много кода. Второй способ использования шаблонов и есть реорганизация кода, или рефакторинг, поскольку при этом происходит изменение проекта системы без добавления в него новых функций или изменения внешнего поведения. Одни включают в программу шаблон, думая, что он позволит более легко ее изменять, другие делают это, чтобы упростить текущий проект. Если код уже написан, то все это является его рефакторингом: первые реорганизуют код для облегчения изменений, в то время как вторые наводят порядок после изменений.

Хотя шаблон — это нечто, присутствующее в самой программе, преобразование программы — также шаблон. Каждый шаблон можно объяснить путем демонстрации программы до его использования и после. С другой стороны, под шаблонами можно понимать реорганизацию кода.

К сожалению, многие читатели теряют связь между шаблонами проектирования и реорганизацией кода. Они понимают шаблоны как нечто, всецело относящееся к проекту, а не к коду. Полагаю, что в заблуждение их вводит название — шаблон проектирования; однако в книге преимущественно используется код, написанный на языке Java, и это обстоятельство должно указывать на то, что шаблоны имеют отношение как к коду, так и к его проектированию и что добавление шаблона обычно требует изменений кода.

Джошуа Кериевски правильно уловил связь. Я встретил его вскоре после того, как он основал группу изучения шаблонов проектирования в Нью-Йорке (Design Patterns Study Group of New York City). Он излагал идею изучения шаблона “до и после” на примере, демонстрирующем влияние шаблона на систему. Столь страстный энтузиазм привел к тому, что до его отъезда из города группа, превышающая 60 человек, собиралась несколько раз в месяц. Он начал с преподавания курсов о шаблонах для компаний и обучал их на месте, у себя дома и по Интернету. Он даже учил других людей обучать этому.

Джошуа продолжил свой путь, став как практиком экстремального программирования (ХР), так и преподавателем. Этому в полной мере соответствует тот факт, что он взялся за написание книги, демонстрирующей связь между шаблонами проектирования и рефакторингом — одним из основных видов деятельности в экстремальном программировании. Рефакторинг не ортогонален шаблонам — он близок к ним. Не все шаблоны, о которых он говорит, взяты из книги Design Patterns, но все они в ее стиле. Книга Джошуа демонстрирует, как шаблоны могут помочь вам в проектировании.