LINUX.ORG.RU

Правила изучения программ


0

0

Здравствуйте.

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

anonymous

> Не читают же код просто от начала до конца?

Боюсь развеять ваши наивные иллюзие, но таки читают.

anonymous
()

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

Для сишных программ есть doxygen, который сгенерит некое подобие документации (даже если код не подготовлен к этому), по которой можно ориентироваться (там есть диаграммы классов для C++, диаграммы зависимостей между файлами, список функций, аннотированные исходники).

mo3r
()

Конечно существуют, но они узкоспециальны часто для различных языков.

Есть приложения для визуализации, codeviz например. Ещё интересный модуль для Eclipse для Java - http://fluideditor.sourceforge.net. Ctags строит индекс и позволяет быстро перемещаться по коду. Диаграммы различные тоже строить можно, но опять же это узкие средства. Можно визуализировать историю изменений по VCS, это тоже часто полезно для понимания.

Какой язык и какой тип кода интересует?

welkam ★★
()
Ответ на: комментарий от welkam

Я не топик-стартер, но поддержу вопрос.
Есть исходники на C++Builder. Очень большая программа, разрабатывалась много лет. Нужно портировать на Linux.

anonymous
()
Ответ на: комментарий от anonymous

> Есть исходники на C++Builder. Очень большая программа, разрабатывалась много лет. Нужно портировать на Linux.

могу с уверенность сказать: пупок развяжется. лучше писать с нуля и ориентироваться не по имеющемуся коду, а по ТЗ.

Rastafarra ★★★★
()

Берёшь того, кто эту программу писал, и ознакамливаешься :)

Вообще ознакамливаются с какой то целью. Например сопровождать и баги фиксить. Я бы просто взял в зубы дебаггер и ползал по коду в поисках бага. В рантайме код полезнее узнавать.

А читать от начала до конца смысла нет. Хороший ревью занимает от получаса на сотню строк кода (с автором рядом). Это будет что то похожее.

Ну можно посоветовать построить диаграммы классов какой-нибудь утилитой, распознавать знакомые паттерны, выделить основные классы и т.д. Немножко поможет.

Legioner ★★★★★
()
Ответ на: комментарий от Rastafarra

Переписывать большую программу - один из самых вредных советов. Большая программа, долго развивавшаяся это очень большой капитал, в неё угрохали кучу времени, фиксили кучу багов, а в новой программе придётся делать то же самое (вплоть до фиксинга тех же багов). Если всё на WinAPI завязано, оптимальным вариантом будет адаптация программы к wine.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

>Берёшь того, кто эту программу писал, и ознакамливаешься :)

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

jtootf ★★★★★
()
Ответ на: комментарий от Legioner

> Переписывать большую программу - один из самых вредных советов.

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

тем более что это еще и порт с билдера... простите, а с гуем что делать? а развивать потом? (тут я полагаю что софтина должна быть кроссовая). смею предположить, что люди, взявшие в руки билдер, не сильно заморачивались на тему выноса логики в отдельный модуль. буду рад ошибиться :)

я конечно понимаю что в идеальном обществе все поголовно пользуются «литературным» программированием (по кнуту), но... реалии таковы, что большая софтина в итоге топит сама себя в плане развития, а еще и портировать...

кстати. большая -- это сколько? можно в строках, можно в годах разработки.

> Если всё на WinAPI завязано, оптимальным вариантом будет адаптация программы к wine.

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

Rastafarra ★★★★
()
Ответ на: комментарий от Rastafarra

"literate" - грамотный, вообще-то.

anonymous
()
Ответ на: комментарий от welkam

>Какой язык и какой тип кода интересует?

Tcl, на нём я пишу; c/c++/python просто хочу уметь читать.

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

А что значит "тип кода"?

anonymous
()
Ответ на: комментарий от Legioner

>Вообще ознакамливаются с какой то целью.

Цель - изучения ЯП. Методов его использования и программирования вообще.

anonymous
()
Ответ на: комментарий от php-coder

О, какая прелесть!!! ;) Спасибо!

anonymous
()
Ответ на: комментарий от anonymous

> Есть исходники на C++Builder. Очень большая программа, разрабатывалась много лет. Нужно портировать на Linux.

CuneiForm?

anonymous
()
Ответ на: комментарий от anonymous

> Есть исходники на C++Builder. Очень большая программа, разрабатывалась много лет. Нужно портировать на Linux.

смотреть в сторону Kylix и его CLX. правда, оно юзало патченное qt 2 , так что сейчас -- хз. Если есть исходники на VCL/CLX (а в Kylix, ЕМНИП, есть), надо "всего лишь" портировать CLX с qt2 на Qt 4.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.