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

29.12.18

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

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

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

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

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

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

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

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

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

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

 

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

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

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

См. также

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

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

16.09.2024    15950    markbraer    66    

43

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

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

10.09.2024    1197    acces969    4    

6

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

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

28.08.2024    1534    Chernazem    3    

6

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

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

22.08.2024    11498    alex_sayan    41    

54

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

Рассмотрим основные принципы шаблона проектирования "Стратегия" на простом примере.

25.06.2024    5064    MadRave    34    

27

Рефакторинг и качество кода Программист Платформа 1С v8.3 Абонемент ($m)

В статье расскажу и покажу процесс проведения Code-review на примере обработки с GitHub.

1 стартмани

04.06.2024    6830    mrXoxot    55    

42

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

Поделюсь своим опытом аудита кода авторских продуктов с Infostart.ru как одним из элементов применения DevOps-практик внутри Инфостарт. Будет настоящий код, боевые скриншоты, внутренние мемы от команды ИТ-лаборатории Инфостарт и прочее мясо – все, что любят разработчики.

10.04.2024    14239    artbear    85    

109

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

Предлагаю вашему вниманию советы мастеров древности. Программисты прошлого использовали их, чтобы заострить разум тех, кто после них будет поддерживать код. Гуру разработки при найме старательно ищут их применение в тестовых заданиях. Новички иногда используют их ещё лучше, чем матёрые ниндзя. Прочитайте их и решите, кто вы: ниндзя, новичок или, может быть, гуру? (Адаптация статьи "Ниндзя-код" из учебника JavaScript)

01.04.2024    4561    DrAku1a    15    

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

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

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


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

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

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

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