Доброе программирование, или сказки для программистов

03.03.18

Разработка - Рефакторинг и качество кода

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

"Добрым быть совсем, совсем не просто…"

 

Однажды в сети я встретил статистику (где именно не помню), что программисты примерно 80% времени читают код и 20% времени код пишут.

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

Через год порой уже и на свой код смотришь как в первый раз.

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

Можно сказать, что Доброе программирование - это написание кода с заботой о том, кто его будет читать.

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

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

 

  1. Вовка в тридевятом царстве или двое из ларца (и так сойдет).

Как правило, именно тогда, когда код написан и заработал, программист лучше всего понимает, каким должен быть код, вот только на самом деле он совсем не такой. Иногда, чтобы код стал красивым, надо его переписать почти полностью, иногда достаточно сделать рефакторинг того, что есть. В любом случае именно сейчас есть понимание того, как надо, и надо именно так и сделать. Оставить "как есть" - это зло).

 

  1. Жили были КИТ и КОТ - было все наоборот.

Теперь самое время прочитать код и проверить, действительно ли этот код понятен читающему.

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

Нет ли слов, которые можно понять различным образом. Писать надо как можно проще - проще для читающего.

 

  1. Как зовут трех поросят - знает каждый.

Чтобы читать много - надо читать быстро, а чтобы читать быстро, надо читать нужное и пропускать остальное.

Для этого надо, чтобы код был разделен на участки, назначение которых можно понять при беглом прочтении, а количество таких участков, отображаемых за один раз, должно быть "обозримым".

Тут нам помогут числа из сказок, 3 и 7.

3 - это минимальное количество элементов, которые воспринимаются как группа.

7 - это максимальное количество элементов, которое воспринимается при  беглом прочтении. Все, что больше - трудно.

 

  1. "Казнить нельзя помиловать" или полтора землекопа.

Остались приятные мелочи - описать ограничения, неочевидные соглашения и ошибки.

Тут надо подумать о том, что может сделать читающий, чтобы "улучшить" ваш код.

Зачем он стал его читать? Может, нет сообщения об ошибке,  а может, пользователю непонятно, как работает программа.

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

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

Самое быстрое чтение - это когда читать не надо.

 

Ну вот, теперь код стал "добрее" и тот, кто станет его читать, скажет больше добрых слов)))

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Рефакторинг и качество кода Обновление 1С Разработчик 1С 8.3 Бесплатно (free)

Первоначальная задача заключалась в локальном переносе добавленных объектов метаданных (справочников, документов) и кастомной логики в расширение без потери накопленных данных. Но в ходе проекта, когда работы были уже практически завершены, заказчик принял решение полностью вернуть конфигурацию к типовому виду и перенести в расширение все измененные свойства стандартных объектов, включая изменения типов реквизитов.

22.09.2026    276    1c-izh    0    

4

Рефакторинг и качество кода Тестирование QA Разработчик Бесплатно (free)

Штатная страховка внутри цепочки обработки умеет прятать дефекты того шага, который стоит перед ней. У нас так и вышло: валидатор чинил результат постфактум, на выходе всё выглядело корректно, и никто не видел, что предыдущий шаг молча теряет данные. Вылезло это только на независимой проверке чужими глазами. Разбираю, чем инвариант отличается от сценарного теста и почему обычное умножение вытащило дефект из красивой метрики 0,997. Отдельно про 13 дублей, которые приехали из источника ещё до всякой обработки, и про две находки, которые оказались вообще не моими: они жили в эталонной реализации, откуда я списывал логику. Вторая часть про лимит выхода модели: почему обрезка ответа по длине это тихий ноль в мониторинге и как смена формата на дельты уронила выход до 4 951 токена. Есть отклонённые гипотезы и честный список того, чего мы так и не померили.

21.09.2026    296    nedomolkov.ivan    2    

1

WEB-интеграция Рефакторинг и качество кода Системный администратор Разработчик 1С 8.3 Бесплатно (free)

Я сел проверять внутренний поисковый сервис по коду: можно ли доверять ему в автоматическом режиме. Сверка с обычным текстовым поиском по файлам дала 261 из 261, 264 из 264 и 182 из 182 совпадений, разбор структуры файла - 318 функций из 318. Стопроцентная точность. Этот же замер и вскрыл, что опираться на сервис нельзя: искал он безупречно, только совсем не в том месте, которое я ему называл. Внутри разбор трёх дефектов, сложившихся в один тихий отказ: аргумент, проглоченный без ошибки; умолчание, выставленное когда-то наугад; снимок данных, у которого в ответе не указан возраст. Плюс регулярное задание, которое вся команда считала работающим и которого не существовало никогда. Перенос на 1С прилагается: готовый цикл проверки, после которого HTTP-сервис перестаёт молча принимать мусор.

21.09.2026    291    nedomolkov.ivan    0    

0

Логистика, склад и ТМЦ Рефакторинг и качество кода Разработчик Аналитик Руководитель проекта 1С 8.3 Бесплатно (free)

Кладовщик получает задачу: на складе проверки лежат две штуки. Идёт в зону, а там всё на месте и никакой задачи в складской системе нет. Так работала автоматическая сверка остатков между учётной и складской системами: разницу она переносила документом, а комментарий к этому документу восемь месяцев отправлял людей искать несуществующий ноль. Робота разобрали до кода. Обе сравниваемые величины оказались синтетическими: слева физический срез с вычетами по активности и окнами в 60 минут и 12 часов, справа учётный остаток на конец дня минус трёхчасовой хвост непроведённых ордеров. Порог срабатывания стоял в нуле, поэтому робот исправно оформлял собственный шум измерения: за 60 дней он сам создал 62,7% оборота технического склада, а 2 081 артикул из 2 102 приезжал туда и уезжал обратно. Внутри обе формулы, замер лага отгрузки, снятая гипотеза и честная граница данных.

21.09.2026    268    nedomolkov.ivan    0    

0

Рефакторинг и качество кода Нейросети Разработчик 1С 8.3 Бесплатно (free)

Как за вечер проверить, годится ли локальная модель для поиска ошибок в вашем коде 1С, и не обмануть себя по дороге. Разбираю замер Qwen2.5-Coder 1.5B, 3B и 7B на коде с заранее известными дефектами: почему полноту и шум надо считать раздельно, как 3B набирает высокий балл, вообще не читая код, сколько минут уходит на боевую процедуру на процессоре и на GTX 1650, и чем кончилась попытка подложить модели справку по методам платформы.

16.09.2026    1235    nedomolkov.ivan    4    

1

Инструментарий разработчика Нейросети Рефакторинг и качество кода Аналитик Пользователь Руководитель проекта Бесплатно (free)

Железо перестало быть проблемой, и качество ответов немедленно встало в потолок. Дальше пошли три улучшения, каждое из которых выглядело очевидно правильным: свой справочник стандартов, код процедур в поисковом индексе и переписывание вопроса отдельной моделью. Первое работало, но стоило пятнадцать тысяч токенов в каждом запросе. Второе уронило находимость на двадцать процентов. Третье уронило качество с 0,864 до 0,782 и растянуло прогон с 88 секунд до 302. Рассказываю, чем я это померил, почему на глаз ни одно ухудшение не видно и почему добавление правдивой информации регулярно делает поиск хуже.

14.09.2026    703    solbol    0    

3

Рефакторинг и качество кода Нейросети Разработчик 1С:Предприятие 8 Бесплатно (free)

Продолжение статьи «BSL Language Server внутри 1С:EDT: коннектор, которого не хватало». Там мы научили EDT видеть расширенную диагностику BSLLS, а здесь замкнем контур: научим ИИ-агентов автоматически исправлять эти ошибки строго по официальным стандартам разработки 1С.

02.09.2026    1879    malikov_pro    2    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. unichkin 1627 04.03.18 16:55 Сейчас в теме
"Делай добро и беги..."
Rjhev; creatermc; tindir; brr; +4 Ответить
2. HAMMER_59 256 05.03.18 07:17 Сейчас в теме
Вспомнилась, серия из Масяни "В небе ангелочки летают по цветочкам ... а на земле полная ОПА, всё плохо сделано..."
Читаешь Инфостарт, прямо все за документирование, правильный код (перед работой, обычно, читаю статьи на Инфостарт), а потом начинается непосредственно работа, эти бесконечные вопросы:
"А почему здесь так, а тут этак?"
"А действительно почему?" а потому, что документация конфигураций у 1С-ников хромает на обе ноги, а документации кода, в принципе нет. В итоге сидишь в отладчике, и волосы где только не шевелятся, когда пытаешься разобраться в их волшебном коде.
Так что 1С пока злое зло :)

А как вспомнишь про партнерские конфигурации :), так уже думаешь, что типовые конфигурации не такое уж и зло.
nagaitseff; Rjhev; Award; Tangram; Бубузяка; Nelli_A86; AlekseySipaev; +7 Ответить
5. brr 184 05.03.18 09:39 Сейчас в теме
(2) Ахах, как это мне близко - 90% времени разбираешься как работает, 10% вставляешь правки.
3. dmt 69 05.03.18 08:25 Сейчас в теме
Пункт 1 радует. Особенно тогда, когда не очень-то и понятно насколько данная фича будет востребована.
4. spectre1978 61 05.03.18 08:42 Сейчас в теме
Гаишники в день экзамена: сегодня ездите по правилам. А завтра будете ездить, как все :)
creatermc; JohnConnor; brr; +3 Ответить
6. KAV2 159 07.03.18 09:56 Сейчас в теме
На самом деле очень редко когда код в мире 1С: Предприятие живет долго, его и так приходится постоянно переписывать ибо весь функционал так или иначе завязан на изменения законодательства. Таже история с покрытием тестами.
Да можно было бы делать по другому: весь функционал завязанный на законодательство выносить в отдельное, типовое решение и отдать его актуализацию всецело на откуп самой компании 1С, но это же не наш метод, мы будем все делать в одном месте, так чтобы постоянно нужно было все актуализировать.
7. DonAlPatino 174 07.03.18 10:59 Сейчас в теме
(6) "Да можно было бы делать по другому: весь функционал завязанный на законодательство выносить в отдельное, типовое решение и отдать его актуализацию всецело на откуп самой компании 1С". Уже в этом месте утопия - мне вот еще не попадался ни один работодатель, который был бы согласен хотя бы процентов на 60% с 1С на тему соответствия законодательству. А уж после перехода на ЗУП 3.1.4 меня вообще терзают смутные сомнения, что расхождение мнения 1С с мнением моей группы расчета зарплаты (поддерживаемое финдиром и главбухом) достигло всех 100 :-(
user811769; romankoav; +2 Ответить
8. Samarkan63 07.03.18 11:45 Сейчас в теме
Полезно, почему бы и нет
9. herfis 524 07.03.18 11:57 Сейчас в теме
Нужная штука. Побольше таких.
Неплохо бы еще че-нить в духе "Как хитрый фрилансер злобного франча перехитрил" и колыбельную для самых маленьких одинэсников.
user811769; nagaitseff; Rjhev; +3 Ответить
Для отправки сообщения требуется регистрация/авторизация