Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/89: Рейтинг темы: голосов - 89, средняя оценка - 4.85
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056

Как научиться эффективно читать чужой код С++

02.04.2013, 01:29. Показов 17267. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поделитесь пожалуйста опытом или просто мыслями о том, как всё таки начать разбираться в не своём коде? Может у кого-то есть какие-то наработки на этот счёт? Буду благодарен получить информацию о навыках, которые позволят за относительно небольшой срок обучиться этому скилу. Спасибо.

Добавлено через 44 секунды
Зы. Имеются ввиду большие аутсорсинговые проекты.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2013, 01:29
Ответы с готовыми решениями:

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

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

Неразбериха: как научиться читать программы
Я в шоке, мне надо за неделю научиться читать программы типа этой и знать какой аутпут будет на экране, кто-то может мне в этом помочь? как...

28
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
02.04.2013, 01:53
Лучше читать когда он напечатан на бумаге. Я большие не читал, но кода маленькие читаю из книг, то просто карандашом помечаю каждую функцию, каждую переменную, что делает, что в ней находиться, для чего создается. Та я даже можно сказать не маленькие программки разбирал очень запутанные на 2 - 3 листа. И так бывает с первого раза не вьедешь, заново пересматриваешь и заново помечаешь, токо уже бывает кода смотришь раз третий, то видишь, что первый раз ты чушь написал, переписываешь, пере исправляешь и так до полного понимания программы.

Так же наверно и к большим проектам относиться. Просто детально разбираешь. Что куда идет, что делает, что в той или иной папке находиться. Записываешь на бумаге, если нада, потом заново перечитываешь, исправляешь. Вообщем долго мучаешься пока не вьедишь либо до какого уровня тебе нужно вьехать. Чем больше мучаешься тем больше понимаешь.

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

Добавлено через 55 секунд
Так что можно сказать громадный код хоть и не С++.
1
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
02.04.2013, 02:57  [ТС]
Цитата Сообщение от ninja2 Посмотреть сообщение
Лучше читать когда он напечатан на бумаге. Я большие не читал, но кода маленькие читаю из книг, то просто карандашом помечаю каждую функцию, каждую переменную, что делает, что в ней находиться, для чего создается. Та я даже можно сказать не маленькие программки разбирал очень запутанные на 2 - 3 листа. И так бывает с первого раза не вьедешь, заново пересматриваешь и заново помечаешь, токо уже бывает кода смотришь раз третий, то видишь, что первый раз ты чушь написал, переписываешь, пере исправляешь и так до полного понимания программы.
Так же наверно и к большим проектам относиться. Просто детально разбираешь. Что куда идет, что делает, что в той или иной папке находиться. Записываешь на бумаге, если нада, потом заново перечитываешь, исправляешь. Вообщем долго мучаешься пока не вьедишь либо до какого уровня тебе нужно вьехать. Чем больше мучаешься тем больше понимаешь.
Добавлено через 6 минут
Вспомнилось тоже кода то пхп таким макаром разбирал создание сайта интернет магазина с нуля. И там было дофига кода, ну короче один код, так я за два месяца его весь разобрал и в то время знал как он работает, способом описаным выше, вся книга была исписана простым карандашом.
Добавлено через 55 секунд
Так что можно сказать громадный код хоть и не С++.
На работе не всегда есть возможность переписать код на бумагу . А по поводу детального разбора, есть такое понятие как начальник, у которого есть ещё начальник и т.д. и который всё время тебя мягко говоря побуждает работать быстрее. Ваши варианты в данном случаи мне не подходят.
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
02.04.2013, 03:04
Зато мой метод разбора эффективный.

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

Добавлено через 1 минуту
Примерно нужно знать в общих чертах как пишется та или иная программа код которой нужно разобрать, а по другому по быстрому не получиться мое ИМХО.
0
C# Brain.net
 Аватар для Jlovenpk1
35 / 35 / 7
Регистрация: 21.10.2012
Сообщений: 333
Записей в блоге: 12
02.04.2013, 03:09
Чужой код всегда тяжело читать. Максимум, что поможет - практика.
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.04.2013, 03:11
Цитата Сообщение от xtorne21st Посмотреть сообщение
Поделитесь пожалуйста опытом или просто мыслями о том, как всё таки начать разбираться в не своём коде?
Лучше задайся другим вопросом, как писать такой код который легко могут читать другие, а главное ты сам ( когда пройдет время).

Что касается чтения чужого кода - так тут все определят багаж знаний ( к примеру знание паттернов - т.е. стандартные подходы к решению задач).
И естественно если код писал Идиот то тут ничем не помочь .... легче браться переписывать....
1
02.04.2013, 03:12

Не по теме:

Лучше задайся другим вопросом, как писать такой код который легко могут читать другие, а главное ты сам
Комментарии всегда спасают, а многие даже их не пишут((

0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.04.2013, 03:15
Цитата Сообщение от Jlovenpk1 Посмотреть сообщение
Комментарии всегда спасают, а многие даже их не пишут((
Некоторые не умеют их писать ... К примеру комменты в духе капитана очевидности...
А по сути комменты нужны обычно только в "трудных" местах, иначе избыточные комменты превращают код - в хлам
0
02.04.2013, 03:18

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Некоторые не умеют их писать ... К примеру комменты в духе капитана очевидности...
А по сути комменты нужны обычно только в "трудных" местах, иначе комменты превращают код - в хлам
Да не умеют, но когда открываешь огромный исходник, так их не хватает)

0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.04.2013, 03:25
Цитата Сообщение от Jlovenpk1 Посмотреть сообщение
Да не умеют, но когда открываешь огромный исходник, так их не хватает)
Ну стоит исходить из того что при написании кода используют определенные подходы, понимание которых облегчает не только написание, но и его чтение.

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

К тому же если давать осмысленные имена классам и ф-циям, то отпадает необходимость в комментарияx.
1
02.04.2013, 03:29

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
К тому же если давать осмысленные имена
В основном самая большая беда, самая большая.
Учусь в колледже, нас этому не учат(да и программистов тоже), в итоге когда я открываю чужую лабу, я вижу...я не фига не вижу и приходиться переписывать код)
Я сам самоучка)) М.Фленов научил давать правильные имена.

0
02.04.2013, 09:35

Не по теме:

Цитата Сообщение от Jlovenpk1 Посмотреть сообщение
Да не умеют, но когда открываешь огромный исходник, так их не хватает)
А хуже, когда они есть, но не соответсвуют действительности.

0
 Аватар для chizz
993 / 521 / 102
Регистрация: 19.03.2013
Сообщений: 3,114
Записей в блоге: 19
02.04.2013, 09:39
Дебаг. Ставишь точку останова и вперед. Быстрее разберешься.
0
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.04.2013, 10:29
Для меня всегда трудно читаемым есть такой сишноподобный код замаскированный под C++:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream.h>
#include <conio.h>
 
int main(){
    cout << "enter array size: ";
    int n; cin >> n;
    int *a = new int[n];
    for(int i = 0; i < n; i++){
        cout << "enter a["<<i+1<<"]: ";
        cin >> a[i];
    }
    int min = a[0];
    for(int i = 1; i < n; i++)
        if(a[i] < min) min = a[i];
 
    int ns = n;
    for(int i = 0; i < n; i++)
        if(a[i] == min) ns--;
 
    int *t = new int[ns];
    int k = 0;
    for(int i = 0; i < n; i++){
        if(a[i] != min) t[k++] = a[i];
    }
    a = t;
    delete[] t;
    for(int i = 0; i < ns; i++)
        cout << t[i] << endl;
    delete[] a;
    getch();
}
Совсем другое дело, когда код написан на STL, сразу проглядывается ясность и намерения автора кода.
1
02.04.2013, 11:25

Не по теме:

На Си тоже можно писать понятный код. Как и на Си++ — непонятный. Для этого, как видите, достаточно давать всем переменным имена из одной буквы.

0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
02.04.2013, 11:46  [ТС]
Пока что нет чёткого ответа, который сможет помочь мне и другим, читающим этот топик. Так... общие (индивидуальные) взгляды на картину.

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
К примеру комменты в духе капитана очевидности
Тут палка двух концов. К примеру, что для вас очевидно для меня может быть совсем не понятно и наоборот.
0
 Аватар для Nagdiel
117 / 116 / 8
Регистрация: 23.12.2012
Сообщений: 195
02.04.2013, 12:07
Цитата Сообщение от xtorne21st Посмотреть сообщение
Пока что нет чёткого ответа,
Четкий ответ Вы вряд ли получите. Здесь всё зависит и от самого кода, и от квалификации читающего, и от его индивидуальных особенностей.

Одно дело - если, например, есть много разных классов. Сами классы, как правило понятны, сложней бывает разобраться в том, как они взаимодействуют между собой. Другое дело - код, который реализует некий сложный алгоритм обработки данных. В первом случае я бы, пожалуй, схемку или диаграмму набросал. Графический материал проще воспринимается. Во втором - как уже раньше советовали, поставил бы бряк и посидел бы в отладчике, пока не станут понятны детали алгоритма. Если такой код еще и плохо структурирован, можно походу и отрефакторить (если, конечно, к этому нет каких-либо препятствий).
2
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
02.04.2013, 14:04
Цитата Сообщение от xtorne21st Посмотреть сообщение
Тут палка двух концов. К примеру, что для вас очевидно для меня может быть совсем не понятно и наоборот.
C++
1
int a = b + c; // Сложение b и c, помещение результата в a
К.О.
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
02.04.2013, 14:53
http://lurkmore.to/%D0%A3%D0%B... 0%B4%D0%B5
2
0 / 0 / 0
Регистрация: 02.04.2013
Сообщений: 2
02.04.2013, 14:56
Реально ли с нуля изучить С ++?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2013, 14:56
Помогаю со студенческими работами здесь

Как быстро научиться читать английские тексты?
Именно читать понимая смысл и переводить на русский - не разговаривать, а читать!

Научиться создавать, читать и упрощать сложные программы
Здраствуйте. Помогите пожалуйста написать код на языке Haskell Задание: три варианта выполнения: - Реализовать алгоритм поиска...

Какую лучше книгу или книги читать, чтобы научиться моделировать именно людей?
Подскажите, кто знает. Какие книги или может быть есть курсы, где можно научиться моделировать людей? То есть, есть предположим несколько...

Какие книги по PHP лучше читать, что бы научиться создавать сложные движки для сайтов?
Какие книги по PHP лучше читать, что бы научиться создавать сложные движки для сайтов? если можно еще видео-уроки. Пересмотрела их...

Как проанализировать объемный и чужой код?
Разбираюсь с кодом своего коллеги. Он смог написать 21000 строк кода в одном модуле без коментариев. (Не считая что 35 процентов кода...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru