реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Как грамотно читать чужой код?
elusive
сообщение Dec 19 2012, 03:27
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



Гугл внятного ничего не ответил на мой вопрос. Больше года моя работа заключается в основном в чтении чужого кода и все острее ощущается нехватка трюков для его эффективного чтения.

Кода более 200 метров, язык си, исходников около 2500. Я работаю над этим один.

Как грамотно вникать в работу сложой большой софт-системы с несколькими слоями интерфесов, дефайнов, call-back-ов и т.д., получить комплексное представление?
Конспектировать на листочке, рисовать в каком-нибудь visio блок-схемы и наколько подробные? Или есть какие-то специальные удобные программы для этого?

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

Сообщение отредактировал elusive - Dec 19 2012, 03:30
Go to the top of the page
 
+Quote Post
ReAl
сообщение Dec 19 2012, 06:45
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Почему в чужом? ;-)

doxygen в режиме полного документирования (а не только того, на что написаны doxy-комментарии). Нужно включить в конфигурации.
На выходе разные форматы, будет удобнее всего обычный html с кучей закладок типы/функции/....
Как-то так: http://openocd.sourceforge.net/doc/doxygen/html/index.html

Блок-схем функций не рисует.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 19 2012, 08:54
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(elusive @ Dec 19 2012, 05:27) *
Гугл внятного ничего не ответил на мой вопрос. Больше года моя работа заключается в основном в чтении чужого кода и все острее ощущается нехватка трюков для его эффективного чтения.

Кода более 200 метров, язык си, исходников около 2500. Я работаю над этим один.

Как грамотно вникать в работу сложой большой софт-системы с несколькими слоями интерфесов, дефайнов, call-back-ов и т.д., получить комплексное представление?
Конспектировать на листочке, рисовать в каком-нибудь visio блок-схемы и наколько подробные? Или есть какие-то специальные удобные программы для этого?

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



200 метров?! Дистрибутив линукса, что-ль хотите весь прочитать в исходниках?
Лучше софтины Understand ничего похоже не придумано.
Но и она бысто сдувается когда дело доходит до многоэтажных макросов и динамических драйверов.
Поэтому я обычно использую сразу много тулсов.
Во первых все 2500 файлов скорее всего в каждом конкретном случае не используются.
Тогда удаляются все файлы которые реально не компилируются в проект.
Потом решается что нужно действительно изучать, а что нет. Изучить все 2500 практически нереально.
Потом то что осталось переформатируется в свою привычную разметку.
Скажем я не перевариваю форматироование текстов принятое в опенсорсах под GNU GPL.
Потом для особо сложных текстов делается рефакторинг: убираю макросы, отделяю константы от переменных, переименовываю функции и переменные и т.д.
Особо неприятная вещь в сорсах это наличие жестких и мягких линков(ссылок) на одни и те же файлы но под разными именами в линуксе.
Это чисто наказание, из-за чего под виндой с анализом проектов сделанных под линукс может крыша съехать.
Ну и вот после этого уже усаживаюсь читать.
Но даже этого часто бывает недостаточно. Ну тогда уже надо идти по шагам на целевой платформе с помощью JTAG-а или в симуляторе.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Dec 19 2012, 09:20
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(AlexandrY @ Dec 19 2012, 12:54) *
Скажем я не перевариваю форматироование текстов принятое в опенсорсах под GNU GPL.
Там принято разное форматирование. Или вы никакое не перевариваете, кроме своего?
Go to the top of the page
 
+Quote Post
ig_z
сообщение Dec 19 2012, 09:39
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (elusive @ Dec 19 2012, 05:27) *
Больше года моя работа заключается в основном в чтении чужого кода и все острее ощущается нехватка трюков для его эффективного чтения.


Understand и Source Insight. Ничего более удобного для таких задач не встречал. Первый проводит анализ чрезвычайно детально. Но не так удобен для навигации по коду, как второй. SI очень не любит макросы и всякие навороченые исходники с большим количеством условной компиляции. Активно пользуюсь ими уже очень давно. Для карандашного анализа рефакторинга печатаю сырцы из SI.
Думаю, что в этот ряд можно поставить и эклипсу, но мне хватает первых двух.
Go to the top of the page
 
+Quote Post
wangan
сообщение Dec 19 2012, 09:43
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 265
Регистрация: 30-11-05
Из: Омск
Пользователь №: 11 590



подтверждаю Understand офигенная штука, кросплатформенная так как юзает QT
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Dec 19 2012, 11:43
Сообщение #7


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(wangan @ Dec 19 2012, 13:43) *
подтверждаю Understand офигенная штука, кросплатформенная так как юзает QT

lol.gif под wine всё, что работает - кроссплатформенное.
Go to the top of the page
 
+Quote Post
Victor®
сообщение Dec 22 2012, 12:00
Сообщение #8


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(wangan @ Dec 19 2012, 12:43) *
подтверждаю Understand офигенная штука, кросплатформенная так как юзает QT


Он как-то лечится?


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
uriy
сообщение Dec 22 2012, 17:30
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



http://thepiratebay.se/torrent/6762490/Sci...87___Keygen_Lz0
Go to the top of the page
 
+Quote Post
Victor®
сообщение Dec 22 2012, 17:43
Сообщение #10


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(uriy @ Dec 22 2012, 20:30) *


beer.gif


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
In_an_im_di
сообщение Jan 5 2013, 19:33
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 454
Регистрация: 20-11-09
Из: Зеленоград
Пользователь №: 53 762



достаточно понять зачем нужен был этот код и написать быстро свой.
Go to the top of the page
 
+Quote Post
Hellper
сообщение Jan 6 2013, 11:30
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 13-08-07
Из: Санкт-Петербург
Пользователь №: 29 745



вышлите, пожалуйста, кейген на cttf@mail.ru


--------------------
Go to the top of the page
 
+Quote Post
Dimochka
сообщение Jan 6 2013, 14:58
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 20-12-05
Из: г.Ульяновск
Пользователь №: 12 452



вышлите и мне пожапуйста кейген на ustu@Rambler.ru
Go to the top of the page
 
+Quote Post
muravei
сообщение Jan 14 2013, 09:37
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(Dimochka @ Jan 6 2013, 17:58) *
вышлите и мне пожапуйста кейген

А лучше положите в "правильное" место.
Go to the top of the page
 
+Quote Post
elusive
сообщение Jan 16 2013, 04:50
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 26-05-10
Пользователь №: 57 544



Цитата(AlexandrY @ Dec 19 2012, 14:54) *
200 метров?! Дистрибутив линукса, что-ль хотите весь прочитать в исходниках?


Это со всеми (нестандартными) библиотеками для данного проца. Медиаприложение для двух подпроцессоров, с декодерами mpeg2 и mpeg4, аудиодекодерами. Множество интерфейсов и т.д....

Цитата(AlexandrY @ Dec 19 2012, 14:54) *
Но даже этого часто бывает недостаточно. Ну тогда уже надо идти по шагам на целевой платформе с помощью JTAG-а или в симуляторе.


JTAG для данной системы находится в "стадии тестирования" и работает нестабильно, чаще - не работает (
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 05:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01536 секунд с 7
ELECTRONIX ©2004-2016