Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Поднимайтесь как можно выше по дереву, собирайте цветы и дарите их близким.
Вас ждут уникальные награды и 22 выгодных промокода!

Пикаджамп

Аркады, Казуальные, На ловкость

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая «Подписаться», я даю согласие на обработку данных и условия почтовых рассылок.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
17
astrobeglec
Лига программистов

Чистый? код⁠⁠

2 года назад

Сразу - я ничего не доказываю в посте, хочу услышать разные мнения насчёт ситуации ниже:

Скинули мне библиотеку, которая практически идеально иллюстрирует "Чистый код" Р. Мартина (кто книгу читал, тот в курсе). Библиотека (цифры округлены) реализует 15 методов API, состоит из 25 файлов в которых есть 25 классов, 50 импортов классов друг между другом, в классах реализовано 70 методов, которые занимают в сумме 1300 строк кода...

С позиции книги всё сделано идеально, вопросов нет.

В чём же мой вопрос?

Решил я переписать данную либу без разделения на уровни абстракций, интерфейсы и т.д. и т.п. Реализация функционала полностью 1 в 1 заняла 50 (пятьдесят) строк кода (я просто убрал объявления классов, а действительно значимые строки кода свёл в 15 функций по 1 на метод, которые свёл в одном файле. По сути 1 строка - объявление функции, 2 - создание JSON из словаря, 3 - возврат результата запроса, 4+ строки - по необходимости (промежуточные вычисления).

У кого есть какие мнения по этому поводу?

P.S. Для тех, кто не в теме есть в т.ч. и такие мнения по поводу книги:

Книга Р. Мартина является сводом правил по написанию правильного кода, которым каждый программист должен следовать. На мой взгляд, умение писать чистый код – важный навык, помогающий специалисту не только самому понимать свой код лучше, но и работать в команде.

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

С одной стороны - для проектов с сотнями тысяч строк кода структура может быть (ввиду отсутствия объективных исследований утверждение не доказано и не опровергнуто) важнее лаконичности из-за высоких трудозатрат на внесение изменений, с другой стороны... А разумно ли фанатично следовать некоторым правилам вообще везде?

Строки кода, это не просто строки кода. Это ещё и время разработчика (которое становится в итоге стоимостью разработки), а в конечном итоге время и ресурсы выполнения программы... Цену чистого кода мы знаем... А товар который мы за эту цену покупаем?

Показать полностью
[моё] Python Программирование Программист IT Чистый код Стандарты Текст
32
YellowClub
YellowClub

Подвожу итоги челленджа на 10000 рублей⁠⁠

2 года назад

На конкурс прислали две работы. Роман написал верные мысли, но подход с обесцениваем мне не нравится. Поэтому Романа дисквалифицирую.

Перевел 10к Антону

Перевел 10к Антону

Антон подошёл к челленджу профессионально. Сделал док файл, в котором объяснил ход мыслей, добавил скрины кода. Такой стиль общения, такое оформление и отношение к делу показывают, что Антон мастер своего дела, с которым приятно работать.

Мысли победителя читайте тут: https://vk.cc/crSKFO

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

Показать полностью 1
Чистый код Челлендж Скриншот Итоги
2
178
YellowClub
YellowClub

Практика чистого кода на 1С⁠⁠

2 года назад

Рассказываю о подходах к разработке на 1С. Показываю на что обращаю внимание, когда пишу код на 1С. Разбираю некоторые особенности архитектуры БСП. Показываю, как делают интерфейсы в типовых и что это такое

1С Чистый код Проектирование Видео YouTube
135
YellowClub
YellowClub

Рад, что научиться практикам чистого кода в 1С хотят так много 1С программистов⁠⁠

2 года назад

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

Курс для тех, кто хочет писать код на уровне типового кода. Прям писать с нуля, а не дорабатывать. Курс для тех, кто хочет понимать принципы работы типового кода.

Анкета предзаписи тут: https://forms.gle/eVnHV4wLJR4EkQmK6

Рад, что научиться практикам чистого кода в 1С хотят так много 1С программистов
1С Проектирование Чистый код
5
YellowClub
YellowClub

Объявляю челендж на 10 000руб⁠⁠

2 года назад

Скрины с кодом со стрима для ленивых.

Объявляю челендж.

Если кто-то решит задачу принципиально другим способом и решение будет лучше моего, то переведу автору кода 10 000 руб.

Задача: автоматическое начисление арендной платы с использованием разных провайдеров договоров.

Код присылайте в комментарий под этим постом. Решения принимаю до понедельника 23 октября 23:59:59

Показать полностью 3
1С Проектирование Чистый код
22
YellowClub
YellowClub

Прочитал в комментариях разные мнения о том, как учиться писать чистый код⁠⁠

2 года назад

«А я использую 1C:EDT. Стараюсь писать без ошибок и замечаний со строгой типизацией»

«Новый опыт ЕДТ с его проверками или анализ Сонаром - сразу меняет стиль. Но максимально новый опыт - это включить строгую типизацию в ЕДТ и начать писать сотни функций-конструкторов, назначение которых только в описании типов параметров, результатов запросов и промежуточных структур»

Чаще всего писали о строгой типизации в EDT и анализ кода Сонаром или Феникс БСЛ. В этот список еще добавлю АПК. Это минимальный набор, который улучшит оформление кода, покажет, что существуют базовые стандарты. Сонар, Феникс, EDT не знают об архитектуре приложения, не расскажут как правильно организовать цепочку вызовов. Не подскажут, какие структуры данных лучше использовать. Не проверяют правильность выбора имена переменных и методов. Только человек такое может.

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

На созвоне вспоминали сертификацию на специалиста и эксперта. Подготовка к сертификатам мозги немного вправляет, но сертификация не о чистом коде.

«Я один раз работал с ревью кодом по истине с хорошим человеком, больше не работал и да сложно понять, какой код ты пишешь, только ревью спасёт. Но не всем заходит, не все готовы принимать критику, видел как это принимают в штыки, мать вашу, бесплатный опыт в штыки, жесть, не понимаю таких людей)) ревьюти меня полностью!»

Тут согласен. Это самый быстрый способ. Только найти толкового наставника сложно. Это должен быть человек, который профессионально пишет на нескольких языках, например Дмитрий Решитко. Человек, который видит общее и без проблем находит интерфейсы в 1С, хотя остальным кажется, что в 1С интерфейсов нет. Хороший наставник должен нормально объяснять, а не намекать каждый раз, что ты просто тупой. Если знаете таких ребят, то держитесь за них крепко. Я от силы четырех человек знаю, которых называю хорошими наставниками по чистому коду, а список контактов 1С программистов у меня большой.

«Читаю, читаю, и все жду, когда у Евгения появится отсылка к литературе не 1С.
А когда добрался про место с книгами ойкнул: Не дало?!!(
Да как же не дало, а вся рефлексия откуда? От типовых»

Можно самому учить другие языки и читать книги: Чистый Код Роберт Мартин, Грокаем алгоритмы, Совершенный код Макконнелла. Только кто проверит, что ты правильно все понял и пишешь действительно хорошо, а не оверинженеришь?

Кажется, кроме наставника вопрос не решается. По крайней мере я не знаю как.

Провести сегодня стрим? Показать, как пишу 1С код? Будет полезно?

Прочитал в комментариях разные мнения о том, как учиться писать чистый код
Показать полностью 1
1С Чистый код Проектирование Саморазвитие Опыт Длиннопост
4
1
YellowClub
YellowClub

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

2 года назад

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

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

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

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

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

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

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

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

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

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

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

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

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

Нашел объяснение, когда чистый код нужен и когда без него можно обойтись⁠⁠

2 года назад

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

Когда программист автоматизирует условно-постоянные процессы, то чистый код тоже не нужен. Пример таких процессов: работа завхоза, работа с архивом. Это второстепенные процессы для бизнеса. Второстепенные процессы меняются медленно. Процесс изменится лет через пять и тогда проще автоматизировать процесс с нуля на современном стеке.

Автоматизацию условно-изменяемых процессов опасно делать на говнокоде. К таким процессам относятся: продажи, производство, ремонты. Заказчик собирает большой бэклог хотелок для условно-изменяемых процессов. Программист знает какие будут изменения, какие блоки связаны друг с другом. Заказчик меняет требования каждый месяц, неделю, день. Бизнес меняется, чтобы конкурировать в быстро меняющемся мире. Говнокодить в этом случае тоже можно, но постепенно вносить изменения становится сложнее и сложнее. Меняешь учет продаж, а отваливается учет ремонтов.

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

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

Верные рассуждения? Что думаете? Кто сколько раз переписывал с нуля и получал такой же результат?

Нашел объяснение, когда чистый код нужен и когда без него можно обойтись
Показать полностью 1
1С Проектирование Чистый код Опыт Обучение Саморазвитие Личный опыт
2
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии