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

29.12.18

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

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

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

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

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

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

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

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

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

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

 

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

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

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

См. также

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

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

12.02.2025    6252    407    wonderboy    42    

117

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

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

11.02.2025    931    it-expertise    0    

3

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

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

31.01.2025    1601    it-expertise    1    

7

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

В практике нашей специальной команды по проектам сложных обновлений 1С прошел один из самых объёмных проектов: необходимо было обновить «1С: Бухгалтерия предприятия КОРП 3.0 + БИТ.ФИНАНС». Конфигурация содержала доработки практически по всем типам объектов метаданных. Длительность проекта составила 1 год и 2 месяца и обеспечила полной загрузкой 4 разработчиков на 6 месяцев.

31.01.2025    1138    1c-izh    3    

5

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

В последнее время термин «чистый код» стал очень популярным. Появились даже курсы по данной тематике. Так что же это такое?

16.09.2024    17409    markbraer    66    

43

Рефакторинг и качество кода Программист Бесплатно (free)

В статье рассматривается отказ от использования процедур и унификация формата ответа функций. Способ описывается на примере развития абстрактной информационной системы, работающей с PDF файлами.

10.09.2024    1389    acces969    4    

6

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

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

28.08.2024    1915    Chernazem    3    

6

Рефакторинг и качество кода Программист Бесплатно (free)

SOLID – принципы проектирования программных структур (модулей). Акроним S.O.L.I.D. образован из первой буквы пяти принципов. Эти принципы делают код более гибким, упрощают разработку. Принято считать, что принципы SOLID применимы только в объектно-ориентированном программировании. Но их можно успешно использовать и в 1С. Расскажем о том, как разобраться в принципах SOLID и начать применять их при работе в 1С.

22.08.2024    12563    alex_sayan    41    

57
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 2746 29.12.18 13:12 Сейчас в теме
Здравствуйте !

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

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


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

П.С. баян - не баян... мне не интересно, как это назовут....
поток инфы настолько огромен, что часть инфы проходит мимо...
для меня инфа полезна, хоть я не новичок в плане копаться в чужом коде...
ivprovotorov; IvanovAV; Voblhned; +3 Ответить
10. Voblhned 58 29.12.18 18:58 Сейчас в теме
(9) плюсую, прямо мысли из головы выдернул, только про 10 лет , это не про меня xD
17. starik-2005 3162 05.01.19 11:23 Сейчас в теме
(11) кстати, в стеке вызовов доступны все переменные всех функций стека. Т.е. проваливаешься на уровень Х и можешь посмотреть любую переменную.
Vlad_2008; +1 Ответить
20. Dementor 1045 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 3162 05.01.19 11:16 Сейчас в теме
(12) все куда проще. Есть модуль менеджера печати, общая форма печатного документа и экспортные методы менеджера объектов, из которых вызывается печать. Есть функции бинда кнопок в интерфейс, которые вызывают уже общую форму, которая создает объект с макетами и дергает функции менеджера объекта, формирующие макет, прибинденые к кнопке.
13. IvanovAV 150 04.01.19 15:51 Сейчас в теме
Интересно им в 1С, за бестолковое усложение кода, молоко или премию выдают?
chernov.gigansk.ru; serega_sun; +2 Ответить
15. starik-2005 3162 05.01.19 11:11 Сейчас в теме
(13) я всегда за примеры. Если код пишет сотня человек с высокой текучкой кадров, то подобный стек вызовов вполне оправдан, ибо повышает уровень абстракции, чем, в пределе понимания, весьма существенно упрощает код.
18. IvanovAV 150 05.01.19 18:30 Сейчас в теме
(15)
уровень абстракции
можно по проще и на понятном языке выражаться? 1С позиционирует себя на рынке, как легко модифицируемые продукты на коленке любым средним специалистом, для малого и среднего бизнеса. А тут надо быть экспертом по типовым КФГ. Наши клиенты (малый бизнес) не готовы оплачивать работу эксперта, когда надо НАПРИМЕР: вывести/убрать пару доп. колонок или подписей на печ. форму. Анализируя код типовых, мы уже давно пришли к выводу, проще (дешевле для клиента) написать свое с нуля, простое и надежное как АК - 47 и его модернизировать, чем искать точку минимального воздействия в каше из типовых модулей, которые еще и переписываются от релиза к релизу...
П.С. А самое дешевое (цена/качество) сидеть на УТ 10.3, и заточить ее под свои бизнес процессы, за несколько десятков часов. Наполнить готовыми доп. подсистемами с инфостарта. Окупаемость ROI, такого проекта для малого бизнеса, несколько месяцев.
Areal; Yashazz; RustIG; +3 Ответить
19. starik-2005 3162 06.01.19 09:35 Сейчас в теме
(18) уровень абстракции - это весьма простой термин. Любая область воспринимается легче, если говорить о ней в общих чертах, т.е. не погружаясь в детали. Вот, например, об организме - мозг управляет мышцами, которые крепятся к скелету. Для питания мышц есть кровеносная система и сердце, которое приводит ее в движение. Легкие снабжают кислородом, кишечник - питательными веществами, которые попадают в него изо рта через пищевод и желудок. Почки и печень очищают кровь и снабжают ферментами с помощью желез. Ну и т.д.

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

В итоге чем выше уровень абстракции, тем легче воспринимать программу, как систему взаимодействующих сущностей. А дальше кже детали реализации конкретного объекта, которые и составляют основную сложность в программировании.
Liyа; WI_IL; Dementor; Denis_CFO; +4 Ответить
14. starik-2005 3162 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) все правильно. Инфраструктура франчайзи нужна, но программисты в них уже не требуются, разве что в очень крупные и значительно меньше, чем сейчас.
Оставьте свое сообщение