На этой неделе прошел второй проект хекслета “Вычислитель отличий”.
Задача проекта сделать консольную программу, которая сравнивает два файла и на выходе показывает их разницу.
В проекте отрабатывается функциональное программирование, иммутабельность, применяется полифорфизм по типу, реализуется Адаптер и Стратегия, но не на классах.
По началу проект проходил бодренько, хоть и менял практически весь код после каждого шага, а вот на пятом шаге началась самая жара. Началась она с отступов и продолжилась тем, что я не правильно делил код. Как написал Кирилл, я не делю код, где он делится, а просто разбиваю программу на куски с дублированием кода. В итоге избавился от дублирования и разделил, как надо.
Одна из фишек проекта разработка через тесты. В тестах есть входные данные и выходные данные, а как код делает из входных выходные для теста не важно. Это очень помогает при изменении кода, а изменять код пришлось довольно часто, думаю без тестов каждый раз проверять результат это целая история, а с тестами легче. Но если есть тесты это не значит, что код написан хорошо. Не знаю, как это описать, наверно надо каждому самому пройти через плохой код который проходит тесты, к хорошему коду который проходит тесты.
Сложность проекта по сравнению с первым выше т.к. больше мест, где можно застрять и переписывать код приходилось чаще, но тесты здесь спасают и облегчают изменение кода.
В общем прохождение проекта было таким
- Делаю шаг, как могу, пытаюсь применить знания из курсов хекслета, отправляю на проверку
- Кирилл комментирует
- Пытаюсь понять, что написал Кирилл, что у меня не так и как переделать. Пересматриваю Ментальное программирование 2.0. Возвращаюсь к пункту 1
После проекта хочется пройти еще один подобный проект и сразу применять знания полученные в ходе прохождения проекта.
Спасибо Кириллу и Рахиму за проекты, без этой практики невозможно полностью осознать и закрепить пройденный материал.
К следующему проекту нужно пройти:
- JS: Обработка ошибок
- Протокол HTTP
- JS: Асинхронное программирование
- JS: Автоматное программирование
- JS: Синхронная асинхронность
- JS: DOM API
“JS: Обработка ошибок” уже прошел, поэтому на следующей неделе буду проходить “Протокол HTTP”. Надеюсь получится удерживать темп один курс в неделю.
Прочитал