Быстрый способ разобраться в чужом коде

29.12.18

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

Добрый день! Хочу рассказать о способе, который позволит быстро разобраться в чужом коде. Я, конечно, думаю, что это жесткий баян, но не видел, чтобы кто-то пользовался этим способом. По крайней мере, новичкам точно будет интересно.

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

Предположим, нужно разобраться, как устроен механизм печати БП 3.0.

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

Также в типовых конфигурациях есть дополнительный параметр запуска «/РежимОтладки», который так же отключает фоновое выполнение. 

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

Данный механизм позволит увидеть список выполненного кода за период работы механизма.

Далее выполняем печать и отключаем замер производительности.

Теперь нужно решить: какой ключевой оператор поможет найти требуемую процедуру, в которой формируется печатная форма. Для формирования печатной формы требуется в любом случае создать объект Табличный документ, таким образом ключевой оператор будет «Новый ТабличныйДокумент» или просто «ТабличныйДокумент». Находим нужную строку, используя ключевой оператор, устанавливаем точку останова и запускаем формирование отчета.

 

После остановки отладки на требуемой строке кода запускаем стек вызовов.

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

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

См. также

Рефакторинг и качество кода Программист Стажер 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:ДО Бесплатно (free)

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

вчера в 12:00    1895    RPGrigorev    15    

21

Рефакторинг и качество кода Программист Платформа 1С v8.3 Россия Бесплатно (free)

Диалог "Вопрос" использовался очень интенсивно в старых версиях кода и также его используют в УФ довольно часто. Иногда очень неудобно использовать рефакторинг через асинхронные вызовы ПоказатьВопрос и ВопросАсинх по разным причинам. Есть ещё одно решение, как избежать больших переделок кода, когда Вы не планируете его использовать где-то на других платформах и Веб-клиентах.

26.03.2025    403    ksuman    6    

3

HighLoad оптимизация Рефакторинг и качество кода Технологический журнал Программист Платформа 1С v8.3 Россия Бесплатно (free)

Технологии бегут вперёд, но боль производительности 1С остаётся вечной: инфраструктура, код или настройки? Пока ИИ не научился чинить всё «на лету», мы автоматизировали ключевое — диагностику. Читайте статью — показываем, как превратить хаос диагностики в понятные графики и цифры. Спойлер: это работает даже если ваша 1С — «чёрный ящик» на старом железе.

19.03.2025    2819    EFSOL_oblako    9    

8

Рефакторинг и качество кода Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

17.03.2025    2421    Bukaska    5    

8

Нейросети Рефакторинг и качество кода Тестирование QA Программист Платформа 1С v8.3 Бесплатно (free)

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

11.03.2025    5272    mrXoxot    52    

53

Рефакторинг и качество кода Тестирование QA Программист Платформа 1С v8.3 Бесплатно (free)

В последней статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, обсудим особенности тестирования после завершения рефакторинга платформеннозависимого кода

11.03.2025    552    it-expertise    0    

3

Инструментарий разработчика Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

Расширяемый форматтер структуры модулей 1С. Умеет автоматически расставлять стандартные области и раскидывать по ним процедуры и функции модуля, оформлять стандартные комментарии к методам с помощью ИИ. Также умеет анализировать модуль - извлекать структуру вызовов, используемые поля и т.д. Реализован в виде расширения (.cfe). Можно использовать как платформу для обработки кода в своих задачах автоматизации разработки.

12.02.2025    7352    465    wonderboy    44    

119

Linux Рефакторинг и качество кода Программист Платформа 1С v8.3 Бесплатно (free)

В третьей статье по докладу Александра Кириллова, с которым он выступил на конференции INFOSTART TECH EVENT 2024, обсудим подходы к рефакторингу платформеннозависимого кода

11.02.2025    1148    it-expertise    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 167 29.12.18 12:24 Сейчас в теме
Вчера аналогичная публикации была ... https://infostart.ru/public/972709/
3. WI_IL 126 29.12.18 12:53 Сейчас в теме
2. bulpi 217 29.12.18 12:28 Сейчас в теме
Уважаемый, если бы Вы НА САМОМ ДЕЛЕ открыли способ , как разбираться в чужом коде, Вам бы памятник при жизни поставили. А это - боян для новичков.
NikieMSE; Natalia; maksa2005; aexeel; YLioY; Кадош; Lyolik; lunjio; TreeDogNight; zeegin; EliasShy; +11 1 Ответить
4. vasilev2015 2753 29.12.18 13:12 Сейчас в теме
Здравствуйте !

Вчера только сделал короткую заметку, что можно применять поиск в окне замера производительности

https://infostart.ru/public/833094/


p.s. Пользуясь случаем, поздравляю всех с Новым Годом !
5. vasilev2015 2753 29.12.18 13:27 Сейчас в теме
(4) Плюсанул. Пусть будет по-новогоднему ))
6. rikony 29.12.18 13:46 Сейчас в теме
Это не баян , а взгляд со стороны :)
7. VmvLer 29.12.18 14:03 Сейчас в теме
с асинхронными вызовами так не всегда будет прокатывать
8. CheBurator 3139 29.12.18 17:43 Сейчас в теме
Спасибо! Мне, как новичку - полезно!
kuzyara; Rasdag; Dimasik2007; Redokov; Batman; Yakud3a; +6 Ответить
9. RustIG 1880 29.12.18 18:54 Сейчас в теме
за 10 лет ни разу "именно так" не изучал чужой код - просто шел по отладке "следующий шаг" - еще "следующий шаг"....
а вообще представленный метод полезный

П.С. баян - не баян... мне не интересно, как это назовут....
поток инфы настолько огромен, что часть инфы проходит мимо...
для меня инфа полезна, хоть я не новичок в плане копаться в чужом коде...
ivprovotorov; IvanovAV; Voblhned; +3 Ответить
10. Voblhned 58 29.12.18 18:58 Сейчас в теме
(9) плюсую, прямо мысли из головы выдернул, только про 10 лет , это не про меня xD
17. starik-2005 3171 05.01.19 11:23 Сейчас в теме
(11) кстати, в стеке вызовов доступны все переменные всех функций стека. Т.е. проваливаешься на уровень Х и можешь посмотреть любую переменную.
Vlad_2008; +1 Ответить
20. Dementor 1048 06.01.19 13:06 Сейчас в теме
(9) Десять лет назад я тоже начинал "расследование" от кнопочки "Сформировать". Но пару лет назад мне попалась УНФ, а там на банальную печать документа жесткая мешанина из процедур модуля менеджера этого документа, специальной печатающей именно этот документ обработки и кучи вызовов из общих модулей, часть из которых спрятана в БСПшных кишках, и часть из которых вызывается вообще в фоне. Почухал репу и на меня снизошло озарение про "Замер производительности", благодаря которому очень быстро все вызовы проанализировал.

Теперь у меня две стратегии разбора чужого кода. При анализе "классических" конфигураций - просто движение по F12 или пошаговая отладка. А для конфигураций на основе БСП - по "замеру производительности".
VyacheslavShilov; ivprovotorov; Vlad_2008; WI_IL; RustIG; +5 Ответить
11. ResAndDev 30.12.18 09:57 Сейчас в теме
Режим отладки применял и ранее, но со "скрипом". Про стек вызовов интересно...
12. Dozkni 48 02.01.19 10:22 Сейчас в теме
<Неизвестный модуль>.<Неизвестная процедура>()
так вот и устроен механизм печати...
ivprovotorov; kuzyara; Dimasik2007; Stivens; asupsam; Zab; rovenko.n; FesenkoA; +8 Ответить
16. starik-2005 3171 05.01.19 11:16 Сейчас в теме
(12) все куда проще. Есть модуль менеджера печати, общая форма печатного документа и экспортные методы менеджера объектов, из которых вызывается печать. Есть функции бинда кнопок в интерфейс, которые вызывают уже общую форму, которая создает объект с макетами и дергает функции менеджера объекта, формирующие макет, прибинденые к кнопке.
13. IvanovAV 152 04.01.19 15:51 Сейчас в теме
Интересно им в 1С, за бестолковое усложение кода, молоко или премию выдают?
chernov.gigansk.ru; serega_sun; +2 Ответить
15. starik-2005 3171 05.01.19 11:11 Сейчас в теме
(13) я всегда за примеры. Если код пишет сотня человек с высокой текучкой кадров, то подобный стек вызовов вполне оправдан, ибо повышает уровень абстракции, чем, в пределе понимания, весьма существенно упрощает код.
18. IvanovAV 152 05.01.19 18:30 Сейчас в теме
(15)
уровень абстракции
можно по проще и на понятном языке выражаться? 1С позиционирует себя на рынке, как легко модифицируемые продукты на коленке любым средним специалистом, для малого и среднего бизнеса. А тут надо быть экспертом по типовым КФГ. Наши клиенты (малый бизнес) не готовы оплачивать работу эксперта, когда надо НАПРИМЕР: вывести/убрать пару доп. колонок или подписей на печ. форму. Анализируя код типовых, мы уже давно пришли к выводу, проще (дешевле для клиента) написать свое с нуля, простое и надежное как АК - 47 и его модернизировать, чем искать точку минимального воздействия в каше из типовых модулей, которые еще и переписываются от релиза к релизу...
П.С. А самое дешевое (цена/качество) сидеть на УТ 10.3, и заточить ее под свои бизнес процессы, за несколько десятков часов. Наполнить готовыми доп. подсистемами с инфостарта. Окупаемость ROI, такого проекта для малого бизнеса, несколько месяцев.
Areal; Yashazz; RustIG; +3 Ответить
19. starik-2005 3171 06.01.19 09:35 Сейчас в теме
(18) уровень абстракции - это весьма простой термин. Любая область воспринимается легче, если говорить о ней в общих чертах, т.е. не погружаясь в детали. Вот, например, об организме - мозг управляет мышцами, которые крепятся к скелету. Для питания мышц есть кровеносная система и сердце, которое приводит ее в движение. Легкие снабжают кислородом, кишечник - питательными веществами, которые попадают в него изо рта через пищевод и желудок. Почки и печень очищают кровь и снабжают ферментами с помощью желез. Ну и т.д.

Это уровень абстракции, приближенно описывающий работу организма. То же самое можно сказать и о программировании. В ООП обычно есть некий глобальный объект - синглтон, к которому вяжется вся логика верхнего уровня, которая состоит из конструктора начального состояния, механ змов, осуществляющих его изменение. Дальше к интерфейсным объектам цепляются обработчики событий.

В итоге чем выше уровень абстракции, тем легче воспринимать программу, как систему взаимодействующих сущностей. А дальше кже детали реализации конкретного объекта, которые и составляют основную сложность в программировании.
Liyа; WI_IL; Dementor; Denis_CFO; +4 Ответить
14. starik-2005 3171 05.01.19 11:09 Сейчас в теме
Правильный метод. Сто лет его юзаю (еще с паскалей, но том это иначе называлось - профилирование, но я юзал турбо-дебагер). На курсах подготовки экспертов данный метод рекомендуют (настоятельно) для поиска узких мест перед тем как лезть в профайлер скула и техжурнал.
21. v3rter 09.01.19 16:25 Сейчас в теме
С одной стороны, сложность типового кода повышает общую капитализацию сегмента отрасли и уменьшает общее количество некачественного исходного кода, с другой стороны она же снижает производительность и повышает требования к аппаратному обеспечению. Уже сейчас минимальная конфигурация компьютера для комфортной работы в типовых конфигурациях приближается к игровым системам начального уровня.

Если тенденция не изменится, то предположу появление и рост объемов методических пособий по технике убеждения клиентов и работе с возражениями, тематических семинаров, пропагандистских материалов, литературы класса "как преодолеть себя и достичь успеха с 1С", детских лагерей и кружков изучения гимна 1С... Или я увлёкся? )
A1WEB; pivo_san; acanta; +3 Ответить
22. acanta 09.01.19 17:42 Сейчас в теме
(21) все правильно. Инфраструктура франчайзи нужна, но программисты в них уже не требуются, разве что в очень крупные и значительно меньше, чем сейчас.
Оставьте свое сообщение