🔥

Тред (@aminopyridin)


Про чистый код. Все еще о преподавании, а не о реальном мире, тут я часто работаю героем анекдота. Встречаются два преподавателя: — Слушай, как писать чистый код — Сейчас расскажу — Да, рассказать я и сам могу, как писать-то?

Кстати, про реальный мир. Всем приходящим к нам в компанию джунов и мидлов мы проводим, среди прочего, учебный блок «Чистый код». Однажды ко мне пришел коллега и сказал: — ну, вот зачем вы их учите чистому коду, а потом они придут в команды, а там... всякое!

— Представь, вот мы всех их учили и они пишут... всякое. А что было бы, если бы не учили?..

Понятно, что методологии в чистом виде и любые правила разбиваются о многогранность реальности, но все еще лучше стараться делать хорошо, чем не стараться. А для этого надо знать, что такое хорошо!

Занимательные опросы, 2 штуки. Умеешь ли ты писать чистый код?
🤔 12.3% Да
🤔 48.4% Скорее да
🤔 29.6% Скорее нет
🤔 9.7% Нет

Есть ли у тебя коллеги, которым нужно научиться писать более «чистый» код?
🤔 60.6% Есть такие
🤔 26.5% Мы все тут хорошо пишем
🤔 12.9% Нет коллег

Я запускала эти же опросы во флудилке фронтендеров Контура. И один из коллег, очень опытных и крутых написал в ответ вот опасения, что непонятно, как проверить это.
notion image

И это логичное опасение. Еще вчера я писала, что запоминаем мы из хорошей лекции далеко не 100% (возможно, порядка 30%), не думаю, что книги имеют больший показатель. Соответственно, прослушав какой-нибудь курс, или прочитав книжку, ты запомнил какую-то часть сказанного.

Если через год, например, просмотреть, прочитать тот же материал еще раз, то узнаешь много нового. Я, например, так первые лет 5 программирования на js раз в году перечитывала learn.javascript.ru — и каждый год столько нового узнавала.

То есть, есть большая вероятность, что ты когда-то давно прочитал/посмотрел что-то про чистый код, запомнил оттуда пару приемов и «все понятно». А потом у тебя зацементировалось то понимание, которое когда-то тогда сложилось.

Кроме того, что после прочтения однократного запоминается не все, против такого обучения идет еще ощущение «мне это не надо, я итак норм пишу». Кстати, чем взрослее разработчик, тем чаще от него такое слышишь, а у него за спиной коллеги матерятся и стесняются ему сказать вслух.

Итак: - чем больше ты уверен, что умеешь писать хороший код, тем легче тебе начать писать плохой (нет критического взгляда) - если ты давно не читал/слушал ничего на эту тему, вероятно, уже мало что помнишь.

У нашего учебного блока Чистого кода используется несколько приемов, которые стараются сломать предвзятость учащихся: С самого начала блока дается задача, которую все решают как могут, а потом сравнивают с «красивым» решением и понимают, что их коду есть куда стремиться

Мы не учим правилам нейминга и расстановки комментариев — это скучно. Поэтому дома все изучают тему SRP (single responsibility principle), а на очной/онлайновой встрече мы решаем задачки, связанные с принципами декомпозиции, компонуемости, читаемости

Еще один полезный в обучении чистому коду подход: предложить решить какую-нибудь задачу, дать код решения другому человеку и попросить прочитать и рассказать, что происходит в коде. Очень отрезвляет понимание того, как другие люди смотрят на твой код (спойлер: по-другому)

Порекомендую чего поизучать, если есть желание: Кусок курса про проектирование, правда он на C#, но смыслу это не мешает: ulearn.me/course/cs2/Kri… И отличную онлайн-версию книжки про рефакторинг, которую сегодня уже рекомендовала: refactoring.guru/ru/refactoring…

Кстати, когда на собеседовании на стажировку мы спрашиваем студентов «Что такое, по-твоему, чистый код?», почти всегда они говорят две вещи: хорошие названия переменных и много комментариев.

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