Шаблоны не являются строительными блоками - поэтому я не должен создавать приложение на основе шаблонов MVC / MVP?


9

Я читал эту страницу о шаблонах проектирования и о том, как вы должны обращаться с ними при написании кода. Насколько я понимаю, в заголовке ссылки говорится:

Шаблоны не являются строительными блоками.

Если я правильно понимаю, это значит не использовать шаблон проектирования, пока это не имеет смысла, правильно? Не начинайте с того, что говорите, что собираетесь использовать шаблон стратегии, подождите, пока вы напишете некоторый код, и если использование шаблона стратегии имеет смысл для вашего дизайна, то используйте его.

Обрабатывать ли я шаблон MCV / MVP таким же образом при создании приложений с графическим интерфейсом? Из соответствующих ссылок написано, что это архитектурный паттерн.

Предположим, что если я создаю приложение с графическим интерфейсом и не использую шаблон MCV / MVP, но мой код чистый, читаемый и поддерживаемый, это все еще кодовый запах / плохой дизайн, в котором я не использовал шаблон MCV / MVP ?

Ответы:


18

Если я правильно понимаю, это значит не использовать шаблон проектирования, пока это не имеет смысла, правильно?

Да.

Не начинайте с того, что говорите, что собираетесь использовать шаблон стратегии, подождите, пока вы напишете некоторый код, и если использование шаблона стратегии имеет смысл для вашего дизайна, то используйте его.

Да. Технически, вы можете понять, что шаблон стратегии уместен еще до того, как вы напишите какой-либо код, но это должно быть потому, что вы думали о реальной проблеме и разрабатывали решение для этой проблемы, которое, как я полагаю, и было вашим намерением.

Обрабатывать ли я шаблон MCV / MVP таким же образом при создании приложений с графическим интерфейсом? Из соответствующих ссылок написано, что это архитектурный паттерн.

Да, MVC / MVP / etc являются архитектурными паттернами. В каком-то смысле это не имеет значения, потому что вы все равно должны использовать MVC / MVP / etc только тогда, когда они имеют смысл; когда это подходит для реальной проблемы, которую вы пытаетесь решить. Разница заключается в том, что, поскольку он применяется на гораздо более высоком уровне, чем, скажем, шаблон «Стратегия», вы обычно выясняете, имеет ли он смысл или нет, и решаете, будете ли вы использовать его как часть Ваша дизайнерская работа, прежде чем писать много кода.

Также имейте в виду, что «MVC / MVP» - это не один шаблон, а очень большое семейство связанных шаблонов, и нет единого мнения о том, что именно считается «MVC», «MVP», «MVVM» или остальными связанный алфавитный суп.

Предположим, что если я создаю приложение с графическим интерфейсом и не использую шаблон MCV / MVP, но мой код чистый, читаемый и поддерживаемый, это все еще кодовый запах / плохой дизайн, в котором я не использовал шаблон MCV / MVP ?

Вовсе нет, потому что MVC / MVP / etc не подходят для каждого приложения с графическим интерфейсом. Например, некоторые графические пользовательские интерфейсы могут быть настолько простыми, что это будет полным излишним, или некоторые графические пользовательские интерфейсы могут не иметь какого-либо постоянного состояния для добавления в «модель» и т. Д. Есть веские причины, почему это семейство шаблонов так популярно, но они не единственные способы написать хорошее программное обеспечение GUI.

Кроме того, «запах кода» обычно означает что-то в конкретном фрагменте кода, что может быть признаком более серьезной проблемы. Если весь ваш код «чистый, читаемый и обслуживаемый», без каких-либо исключений, то почти по определению у вас нет никаких запахов кода (кроме, возможно, нескольких «ложноположительных» запахов кода, которые не указывают на реальные проблемы) ).

Поэтому, чтобы ответить на заголовок вашего вопроса: «Как обращаться с паттерном MVC / MVP?», Я бы сказал: прочитайте о том, почему эти паттерны так популярны, то есть какие проблемы они пытаются решить, чтобы в будущем Вы можете сказать, может ли ваша последняя проблема быть решена с помощью этих шаблонов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.