В рамках руководства P1XT я немного пишу обо всем, что делаю. Это позволяет мне запоминать, чему я научился, отслеживать свой прогресс и делиться своими знаниями с другими.

Вкратце об этом курсе:

Вот очень простое для понимания видео о шаблоне Observer в четко определенном контексте небольшого проекта. Теперь возьмем этот большой сложный проект и проведем его рефакторинг!

Много раз на этом курсе я пересматривал видео. Снова сделал записи. Перечитайте мои записи. Видео слишком просты по сравнению с задачами, которые вас просят решить. Даже вопросы «проверки знаний» дали четкий отход от концепции видео, но тогда открытие «длинных задач» для реализации новых знаний было на 10 шагов вперед. Иногда это расстраивало: день 1 ты учишься читать, день 2 - это Моби Дик. Но благодаря этому я лучше понимаю темы, и, давай, это курс университетского уровня, они не собираются кормить тебя всем с ложечки.

Учитывая это, мне очень понравился этот курс. Подобно курсу «Сложные данные» в этой серии, он берет то, что вы узнали ранее, и применяет его к практическим проектам. Я МНОГОЕ узнал о дизайне программного обеспечения, его использовании и хороших методах программирования.

В модуле Надежность я узнал, как защитить свой код от злонамеренного использования, добавив Exception и правильно обработав их с помощью предложений try / catch. Я видел это много раз за свою «карьеру», но никогда не находил времени, чтобы понять их. Профессор Элиза прекрасно объясняет, как исключения генерируются и перехватываются разными частями программы. Я также узнал, как тестировать исключения - что они генерируются правильно, когда должны. Конечно, мы также научились абстрагироваться от исключений, чтобы избежать дублирования кода. Я немного боролся с этим модулем, викторина была очень сложной; это действительно заставило вас задуматься, как и где исключения будут генерироваться / перехватываться в контексте выполнения.

Я объединю следующие два модуля: извлечение и реализация дизайна. В основном они были посвящены UML, который мы видели в самом начале предыдущего курса. Хотя это займет некоторое время, физическое рисование того, как взаимодействуют классы, поможет вам расшифровать кодовую базу. Это также может помочь понять, как следует строить отношения и как можно провести рефакторинг. Точно так же извлечение дизайна из диаграммы UML очень хорошо укрепляет код в моей голове. Мне очень понравились оба этих модуля

Следующий модуль по Принципам дизайна был для меня почти на 100% новым. Это формализация того, что мы уже выяснили. Курс хорошо знакомит с некоторыми базовыми принципами, позволяющими упорядочить ваш код и легко расширять его. В рамках парадигмы проектирования SOLID мы рассмотрим два принципа. Принцип единой ответственности гарантирует, что каждый класс выполняет только одну «вещь» в отношении всей программы. При внедрении новой функциональности важно учитывать, подходит ли она к существующим классам или должен быть определен новый класс для ее обработки. Этот принцип гарантирует, что мы сохраняем хорошую сплоченность и низкую связность в нашей кодовой базе. Связка относится к тому, насколько изменения одного класса повлияют на другой. Принцип замещения Лискова немного сложнее для понимания. В нем, в некоторых словах, говорится, что для того, чтобы подкласс мог быть заменен его суперклассом, он не может иметь более сильных предусловий или более слабых постусловий. Подкласс не может принимать более узкий диапазон входных данных и не может иметь более широкий диапазон эффектов. Последняя часть этого модуля применяет это в практическом упражнении по рефакторингу, в целом 10/10 отличной информации.

Последний модуль представил нам три шаблона дизайна Java: составной, итератор и наблюдатель. Шаблон составного дизайна похож на саморефлексию, о которой мы узнали в Racket. Идею лучше всего пояснить на примере. Папка с файлами может содержать папки или файлы. Следовательно, оба относятся к типу, скажем, Fileable, но только один может содержать другие файлы. Папка поддерживает список своего содержимого и любых других связанных данных, но файл будет поддерживать только эти данные. Шаблон Наблюдатель великолепен, он включает в себя класс, который следит за изменениями в другом классе и действует соответственно. Мы можем определить нашего собственного наблюдателя / наблюдаемого или использовать встроенные в Java. Шаблон итератора полезен, когда вы хотите перебрать некоторые данные в объекте, но этот объект более сложен. Опять же, вы можете создать свой собственный итератор или использовать встроенный Iterable / Iterator. Я боролся с этим более абстрактным модулем, но я обязательно вернусь к нему. Итератор также повторяет то, что мы узнали в YDKJS о генераторах, и помогает мне лучше понять лежащие в основе рассуждения.

Последним проектом этого курса было завершение твита картографа, который отображает твиты на карте, которые соответствуют вашим критериям поиска. Я думаю, что для завершения проекта я написал всего около 20 строк кода, это меня немного не впечатлило. Больше всего я боролся с изучением встроенных модулей Java Map / Layer.

Сейчас я собираюсь пройти Введение в разработку программного обеспечения на edx, а затем, возможно, сделаю небольшой перерыв, чтобы освежить свой JS, перечитать YDKJS и попрактиковаться в создании проигрывателя tictactoe FCC. Ура!