Про чистый код.
Все еще о преподавании, а не о реальном мире, тут я часто работаю героем анекдота.
Встречаются два преподавателя:
— Слушай, как писать чистый код
— Сейчас расскажу
— Да, рассказать я и сам могу, как писать-то?
Кстати, про реальный мир. Всем приходящим к нам в компанию джунов и мидлов мы проводим, среди прочего, учебный блок «Чистый код».
Однажды ко мне пришел коллега и сказал:
— ну, вот зачем вы их учите чистому коду, а потом они придут в команды, а там... всякое!
— Представь, вот мы всех их учили и они пишут... всякое. А что было бы, если бы не учили?..
Понятно, что методологии в чистом виде и любые правила разбиваются о многогранность реальности, но все еще лучше стараться делать хорошо, чем не стараться. А для этого надо знать, что такое хорошо!
Занимательные опросы, 2 штуки.
Умеешь ли ты писать чистый код?
🤔
12.3%
Да🤔
48.4%
Скорее да🤔
29.6%
Скорее нет🤔
9.7%
НетЕсть ли у тебя коллеги, которым нужно научиться писать более «чистый» код?
🤔
60.6%
Есть такие🤔
26.5%
Мы все тут хорошо пишем🤔
12.9%
Нет коллегЯ запускала эти же опросы во флудилке фронтендеров Контура. И один из коллег, очень опытных и крутых написал в ответ вот опасения, что непонятно, как проверить это.

И это логичное опасение. Еще вчера я писала, что запоминаем мы из хорошей лекции далеко не 100% (возможно, порядка 30%), не думаю, что книги имеют больший показатель.
Соответственно, прослушав какой-нибудь курс, или прочитав книжку, ты запомнил какую-то часть сказанного.
Если через год, например, просмотреть, прочитать тот же материал еще раз, то узнаешь много нового. Я, например, так первые лет 5 программирования на js раз в году перечитывала learn.javascript.ru — и каждый год столько нового узнавала.
То есть, есть большая вероятность, что ты когда-то давно прочитал/посмотрел что-то про чистый код, запомнил оттуда пару приемов и «все понятно».
А потом у тебя зацементировалось то понимание, которое когда-то тогда сложилось.
Кроме того, что после прочтения однократного запоминается не все, против такого обучения идет еще ощущение «мне это не надо, я итак норм пишу». Кстати, чем взрослее разработчик, тем чаще от него такое слышишь, а у него за спиной коллеги матерятся и стесняются ему сказать вслух.
Итак:
- чем больше ты уверен, что умеешь писать хороший код, тем легче тебе начать писать плохой (нет критического взгляда)
- если ты давно не читал/слушал ничего на эту тему, вероятно, уже мало что помнишь.
У нашего учебного блока Чистого кода используется несколько приемов, которые стараются сломать предвзятость учащихся:
С самого начала блока дается задача, которую все решают как могут, а потом сравнивают с «красивым» решением и понимают, что их коду есть куда стремиться
Мы не учим правилам нейминга и расстановки комментариев — это скучно. Поэтому дома все изучают тему SRP (single responsibility principle), а на очной/онлайновой встрече мы решаем задачки, связанные с принципами декомпозиции, компонуемости, читаемости
Еще один полезный в обучении чистому коду подход: предложить решить какую-нибудь задачу, дать код решения другому человеку и попросить прочитать и рассказать, что происходит в коде. Очень отрезвляет понимание того, как другие люди смотрят на твой код (спойлер: по-другому)
Порекомендую чего поизучать, если есть желание:
Кусок курса про проектирование, правда он на C#, но смыслу это не мешает: ulearn.me/course/cs2/Kri…
И отличную онлайн-версию книжки про рефакторинг, которую сегодня уже рекомендовала: refactoring.guru/ru/refactoring…
Кстати, когда на собеседовании на стажировку мы спрашиваем студентов «Что такое, по-твоему, чистый код?», почти всегда они говорят две вещи: хорошие названия переменных и много комментариев.
И хотя, в универе при приеме работ мы заставляем убирать бесполезные комментарии, по моему опыту обучения совсем начинающих, многим гораздо легче понимать, что происходит в коде, когда каждую строчку они подпишут понятным им комментарием.