Все статьи | Блог студента

✓ Проект «Лента новостей» (frontend): пройдено

Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
✓ Проект «Лента новостей» (frontend): пройдено главное изображение

Завершила третий проект. Начала я его 19 июля, 1 августа отправила на первую проверку, и 22 августа спустя 6 проверок ментор принял проект.

Было даже сложнее, чем с предыдущим. Но не менее увлекательно и полезно. Улучшила свои навыки работы с вебпаком, бутстрапом, попрактиковала watchjs и немного освоила автоматы (для этого даже начала читать сответствующую книгу). Кроме того, разобралась как работают кастомные события на нативном JS, иначе неловко было пользоваться jquery, не зная, как оно внутри устроено.

Основной сложностью здесь была архитектура и автоматы. Я начала писать проект на классах, потому что в бойлерплейте лежали они. Сначала у меня был один большой класс, потом я попыталась выделить несколько отдельных классов. Но классы не получались, получился набор рандомных методов. Пришлось переписывать на функции.

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

Я вроде бы помнила, что такое MVC, и какой слой за что должен отвечать. Однако всё равно продолжала путаться, пока не выделила для себя следующие правила: 1) вотчеры должны только перестраивать DOM и не изменять стейт, 2) листенеры должны только изменять стейт и не перестраивать DOM.

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

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

Или когда ты въезжаешь в концепцию MVC, и начинаешь переписывать встроенные функции бутстрапа так, чтобы DOM перестраивался через вотчеры, а на стандартные события навешиваешь изменение состояния, но потом оказывается, что так делать не нужно, и нужно пользоваться готовыми абстракциями библиотеки.

Если на втором проекте приходилось больше голову ломать над тем, чтобы хоть как-нибудь добиться нужного результата, после чего комментарии ментора давали однозначное понимание, куда двигаться дальше. Здесь же добиться требуемого результата не так уж сложно, но очень сложно сделать это правильно. Для этого приходилось часто задавать вопросы Кириллу, иначе сложно было двигаться вперёд. А над полученными ответами нужно было подолгу размышлять, чтобы уловить суть.

Кириллу — великая благодарность.

Теперь сегодня я попробую выспаться (утопия), а с завтрашнего дня — приступаю к четвёртому долгожданному проекту.

Аватар пользователя Irina Nikolaidi
Irina Nikolaidi 23 августа 2019
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
25 мая 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
25 мая 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
25 мая 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
25 мая 16 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
25 мая 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Создает веб-приложения со скоростью света
25 мая 5 месяцев