Я работаю с Javascript в течение последних 4 лет. Я очень уверен в своих навыках решения проблем и вижу, что качество моего кода улучшается. Я стараюсь быть в курсе событий сообщества, и в настоящее время я работаю с ES2015 и React.js. Однако я чувствую, что вообще не могу понять шаблоны проектирования программ. Я знаю, где найти ресурсы об этом, и я уже читал книги об этом. Я полагаюсь на своих старших сотрудников, которые принимают решения о структуре проекта, но у меня нет проблем с этим.
Всякий раз, когда мне нужно что-то запустить самостоятельно, я ищу следующие два пути: если я использую большую библиотеку / фреймворк, такой как React.js, я склонен копировать то, что делает сообщество; Если я нахожусь на чем-то меньшем, я буду использовать шаблон модуля. Я знаю, что как только у меня появится лучшее понимание по этому вопросу, я смогу принимать более правильные решения, но сейчас я полностью потерян.
Должен ли я искать высшее образование по этому вопросу? Нужен ли мне наставник на эту тему? Я просто тупой? Это действительно так сложно понять?
источник
Ответы:
Шаблоны разработки программного обеспечения - это хорошо известные решения известных проблем. Вы понимаете их, изучая шаблоны, понимая, как они работают, и зная, когда уместно применять каждый из них к дизайну вашего программного обеспечения.
Вы изучаете шаблоны проектирования программного обеспечения, изучая их по одному. Это непрерывный образовательный процесс. Если вы хотите уменьшить объем обучения, изучите те шаблоны, которые непосредственно связаны с технологиями, которые вы используете в настоящее время.
Некоторые важные вещи, которые нужно знать о шаблонах проектирования:
Некоторые шаблоны дизайна носят архитектурный характер. MVC и MVVM являются примерами таких шаблонов. Вы используете такие шаблоны, когда вам нужны организационные и структурные преимущества, которые они предоставляют.
Некоторые шаблоны проектирования - это обходные пути для недостатков в языках программирования. Вам не понадобятся эти шаблоны, если вы используете более выразительный язык программирования, но часто вы не можете сделать этот выбор. Большинство паттернов GoF находятся в этой категории .
Используйте программный шаблон только тогда, когда вы пытаетесь решить проблему, для которой этот шаблон специально предназначен. Если вы пишете приложение, соединяя программные шаблоны, вы делаете это неправильно.
Не существует существующего программного шаблона для каждой существующей вычислительной проблемы. В этом случае программирование было бы просто упражнением по сопоставлению с образцом.
Некоторые модели на самом деле являются анти-шаблонами. Дополнительная сложность, которую представляют эти шаблоны, перевешивает преимущества, которые они предоставляют. Вы должны будете решить для себя, по шаблону, какой из этих шаблонов вы будете избегать.
источник
Подход к обучению у всех немного другой, и я понятия не имею, каков ваш общий подход, но я верю, что вы оказываете себе медвежью услугу, называя себя «глупым».
Лично из моих наблюдений за тем, что многие называют «успешными» разработчиками программного обеспечения, дизайнерами и т. Д., У всех есть общая тема для их обучения: «опыт». Я полагаю, что это ваше «высшее образование», и вы научитесь быстрее, чем покупать тонны книг у Амазонки и читать их (моя плохая привычка).
Так, например, возьмите шаблон GOF, такой как шаблон команды, и реализуйте его на выбранном вами языке. Понять, какие преимущества это дает вам и недостатки. Различные книги по шаблонам дизайна объяснят вам это, но я чувствую, что лучше применять эти знания на практике и учиться на них. Не стоит сбрасывать со счетов материалы для чтения, у них есть цель, но мир информационных технологий вряд ли является учебником. Тем не менее, это мое мнение и взгляд на мир информационных технологий и, отчасти, представляет собой собственную борьбу, когда я начинал свою карьеру в разработке программного обеспечения. Кроме того, основной проблемой, которую я вижу, даже с очень опытными разработчиками программного обеспечения, является нетерпение и забвение наслаждаться тем, что они делают. Поэтому не торопитесь с тем, что изучаете, и помните, что вам действительно нравится то, что вы делаете, иначе зачем тратить время на это?
Кроме того, используйте практический опыт других людей. Существует множество решений с открытым исходным кодом, как плохих, так и хороших, и вы можете поучиться у них. Посмотрите, как они применили шаблоны, и подумайте, как бы вы справились с этим по-другому.
Итак, мой общий совет: если вы чувствуете, что ваш подход неверен, измените его. Посмотрите на окружающих вас людей, которые, по вашему мнению, изучают материал, который, как вы чувствуете, вы не понимаете, посмотрите на то, что они делают, или даже спросите их.
источник
Краткий ответ: они вам не нужны . Вы можете написать код без них. Как сказал Мэтью в комментариях, это особенно верно в JavaScript, где язык довольно гибкий, а проекты, как правило, меньше. Но если вы программируете в течение 4 лет, мне трудно поверить, что вы не сталкивались с вещами, которые кажутся повторяющимися или неловкими. Это те области, которые вы либо заново открываете, либо пропускаете шаблоны проектирования.
Пример: система событий JavaScript часто не соответствует поставленной задаче. Неужели вы никогда не хотели комбинировать или преобразовывать потоки событий? Или эта серия событий сама по себе была первоклассной ценностью? Вам нужны шаблоны Mediator и / или Observer. Нужна двухсторонняя привязка данных? Та же история.
Хрупкий прототип иерархии попал? Mixin / Trait / Subclass Фабричные шаблоны на помощь.
источник
Найдите наставника, кого-то с очень хорошим опытом, чтобы учиться. Задайте ему вопрос, посмотрите его код, отправьте обзор кода и попытайтесь сотрудничать с ним. Это лучший способ улучшить свои навыки кодирования.
дополнительно:
Сотрудничайте с каким-нибудь простым проектом OSS, который вам нравится
Когда есть два способа решения одной и той же проблемы, всегда выбирайте более простой
Создайте дополнительный опыт работы с побочными проектами, где вы можете делать любые странные ошибки, и вы изучите шаблон проектирования «трудным путем» (tm)
источник