Приходит ли чистый код с возрастом

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

Код на 1С я писал со времён 1С 7.7. Запомнились модули в десятки тысяч строк, бесконечные процедуры, которые листаешь по часу, так и не достигая конца. Проблемы в этом я не видел, все писали так, типовые состояли из такого кода.

Наступила эра 1С 8. Ситуация изменилась. Я почитал стандарты. Узнал, что писать длинные методы — плохо. Нещадно кромсал код. Только чёткого понимания, как правильно разбивать логику на методы не было. Никто не сказал, что бизнес логику обрабатываем отдельно, данные получаем отдельно. Никто не рассказал об уровнях абстракции кода внутри функции и как сделать так, чтобы абстракции не протекали. Никто не научил, что получение данных — ответственность самого объекта, а в общие модули помещают высокоуровневую логику, которая работает с предоставленными данным. Исключение составляют общие модули-провайдеры. Короче, делил код по модулям и функциям по велению сердца, без четкого понимания что и в каких модулях писать.

За пару лет научился профессионально копировать код из типовых. Написать годный код с нуля не мог, тк не понимал принципы, по которым строится типовой код. Прошёл курсы-по-1С-рф. Узнал многое о том, как работает платформа. Решил, что познал дзен. Чтение умных книг Макконнелла и прочих не дало ничего. В голове засела мысль: «Описанные приемы для 1С сферы не работают». Лет десять жил в парадигме, что пишу нормально, как все.

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

Потом стримили со скандинавом, потом прошёл стрим с Дмитрием Решитко. После стримов убедился, что я говнокодер. На это осознание ушло десять лет жизни.

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

Подписчик посоветовал курс по архитектуре игр. Курс изменил подход к кодированию. Код игры стало легко модифицировать, легко понимать, как код работает. Выкинул конструкторы. Пишу игры только на своей кодовой базе.

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

Код улучшился и за счет передачи знаний другим. Два года преподаю 1С программирование новичкам. Взрослые спрашивают противные вещи: «Почему и зачем». Сначала отвечал: «В 1С так принято». Обучающиеся не отставали. Разбирался, как же работает платформа, почему пишут интерфейсные функции, почему основной реквизит формы — данные формы структура. Как правильно применять обработчики событий. Как писать понятные для пользователя сообщения и многое другое.

За два года мой код стал сильно лучше. В голове вертятся такие выводы:
🟩Опыт не в годах
🟩Пока не увидишь чистый код, не поймешь, что говнокодишь
🟩Чистый код это не то что радует глаз, а то что помогает решать задачи
🟩Чтобы писать чистый код, не обязательно работать в хорошей команде
🟩Сложно найти топового наставника, который подтянет твой код

А у вас какой опыт? Как учитесь писать чистый код? Почему думаете, что ваш код чистый?

Приходит ли чистый код с возрастом Чистый код, Проектирование, Опыт, Саморазвитие, Личный опыт, Обучение, Длиннопост