Продолжаю работу с ментатами 🤓
...Попробовал Zed и TRAE, про которые вы говорили в ответе на мой последний отчёт.
Я впервые навайбкодил приложение :)
За 6 минут я получил рабочее приложение (три-в-ряд), при этом сам вообще не писал код.
Подобные приложения получаются быстро, потому что нейронка просто ворует код с гитхаба :)
...Упрощенно имитируем игровой процесс диабло-1 :)
Лог событий накапливается в value State-монады, а не в GameState.
...Очень сильно впечатлило это задание (TDD). Нравится так работать. Да, это дольше (пока что), но зато я почти с полной уверенностью могу говорить, что код, который я отдаю, работает как надо, и я готов за него отвечать.
...Как следствие, негатив копится как от невозможности нормально делать TDD, так и от нежелания качественно покрывать тестами большой и запутанный кусок кода.
Так-то это база TDD:
"В конце концов, тестирование в конечном итоге - это всё же про хороший дизайн. Как только вы начнёте писать код, в котором будет легко разбираться, тесты станет легко добавлять позже. Но пока такой код у вас особо не получается, значит вам точно надо начинать с тестов."
А надо ли вообще покрывать тестами существующий говнокод, вопрос открытый :)
TDD собственно и про рефакторинг во многом, лучше время вкладывать в это.
Ваша карьера программиста определяется не тем, насколько хороший код вы можете написать, а тем, насколько дерьмовый код вы можете прочитать, и затем улучшить.
Эта вечная база кстати (с курса Ясное Легаси) с явлением AI стала на порядок актуальнее.
Сейчас правильный loop работы с агентами такой: взаимодействуете с ними как минимум на уровне паттернов проектирования, чтобы не увязать в конкретном коде. И постепенно повышаете уровень абстракций.
...Об многомерный динамический массив второй раз спотыкаюсь. Не получается с наскока интуитивно представить. Однако, это заставило меня задуматься не о самой структуре, а непосредственно о функции, которая ее задает. И все прошло гораздо легче, рекурсия помогла.
...Отзыв на курс. Самое полезное, что там со мной произошло, — я развёрнуто ответил на вопрос и оказался не прав.
...Идея простая и довольно неприятная: мы все интуитивно чувствуем, что такое баг, но как только пытаемся дать определение — оно расползается. Пример с Rect, где сеттер длины пишет в ширину, отличный именно тем, что после всех «исправлений» система работает правильно. Наблюдаемого неправильного поведения нет. А код при этом сломан, и любой разработчик это скажет с порога.
PS а вообще, не покидает ощущение, что параллельно занимаюсь противоположным - здесь уменьшаю "длину строки кода", а в "ФП для начинающих" наоборот, накручиваю все в одну строку :)
Ну, да, в ФП пайплайны база. Главное, не забывать, в какую сторону их правильно формировать, чтобы исключать вложенность.
...Переход от пропозиционального отношения равенства к топологии и путям - это очень мощно. Я ранее уже пытался рассматривать разработку с точки зрении графов, но это была скорее простая ментальная модель для исследования зависимостей.
Рад тому, что придумывая примеры для зависимых типов, осознал всю силу MISU, возможно было бы выразить инварианты системы в собственной системе типов, Изменения/ошибки обнаруживались бы автоматически.
=
Программная инженерия -- это искусство не делать дерьмово.
В частности, когда вам дают задачку - всегда ищите наименьшую реализацию, которая удовлетворяет всем условиям, буквально/эксплицитно заданным в тикете. Соответственно, никогда ничего не додумывайте.
(ищем копредел, точнее, начальный "тикет" в категории семантики задачи, LPF в помощь)
Post #2582
569
- 👍 33
- ❤ 5
- ✍ 3
- ⚡ 3