Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.94
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
#1

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

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

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

Добавлено через 44 секунды
Зы. Имеются ввиду большие аутсорсинговые проекты.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2013, 01:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как научиться эффективно читать чужой код С++ (C++):

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

Помогите разобрать чужой код - C++
нам дали задание понять, что собственно написано в коде. Может кто подскажет как легче читать чужой код. Вот тот самый кусок кода,...

учусь разбирать чужой код - C++
что делает эта функция? static unsigned long foo (char *w) { int c; unsigned long u = 0; while (*w != 0) { if...

Как эффективно изучать программирование? - C++
Всем привет, хотелось бы услышать рекомендации по эффективному изучению языка C++. Изучаю его по книге Дейтелов, пишу и разбираю примеры из...

Файл: Как наиболее эффективно разделить строку? - C++
В файле есть например: James 0.8 0.7 0.75 0.5 0.85 J Как наиболее эффективно разделить эту строку, поместить James и J в двумерный char...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
02.04.2013, 01:53 #2
Лучше читать когда он напечатан на бумаге. Я большие не читал, но кода маленькие читаю из книг, то просто карандашом помечаю каждую функцию, каждую переменную, что делает, что в ней находиться, для чего создается. Та я даже можно сказать не маленькие программки разбирал очень запутанные на 2 - 3 листа. И так бывает с первого раза не вьедешь, заново пересматриваешь и заново помечаешь, токо уже бывает кода смотришь раз третий, то видишь, что первый раз ты чушь написал, переписываешь, пере исправляешь и так до полного понимания программы.

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

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

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

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

Добавлено через 1 минуту
Примерно нужно знать в общих чертах как пишется та или иная программа код которой нужно разобрать, а по другому по быстрому не получиться мое ИМХО.
0
Jlovenpk1
C# Brain.net
31 / 31 / 3
Регистрация: 21.10.2012
Сообщений: 281
Записей в блоге: 1
02.04.2013, 03:09 #5
Чужой код всегда тяжело читать. Максимум, что поможет - практика.
1
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,665
Записей в блоге: 17
02.04.2013, 03:11 #6
Цитата Сообщение от xtorne21st Посмотреть сообщение
Поделитесь пожалуйста опытом или просто мыслями о том, как всё таки начать разбираться в не своём коде?
Лучше задайся другим вопросом, как писать такой код который легко могут читать другие, а главное ты сам ( когда пройдет время).

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

Не по теме:

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

0
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,665
Записей в блоге: 17
02.04.2013, 03:15 #8
Цитата Сообщение от Jlovenpk1 Посмотреть сообщение
Комментарии всегда спасают, а многие даже их не пишут((
Некоторые не умеют их писать ... К примеру комменты в духе капитана очевидности...
А по сути комменты нужны обычно только в "трудных" местах, иначе избыточные комменты превращают код - в хлам
0
Jlovenpk1
02.04.2013, 03:18
  #9

Не по теме:

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

0
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,665
Записей в блоге: 17
02.04.2013, 03:25 #10
Цитата Сообщение от Jlovenpk1 Посмотреть сообщение
Да не умеют, но когда открываешь огромный исходник, так их не хватает)
Ну стоит исходить из того что при написании кода используют определенные подходы, понимание которых облегчает не только написание, но и его чтение.

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

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

Не по теме:

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

0
Nagdiel
02.04.2013, 09:35
  #12

Не по теме:

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

0
chizz
980 / 495 / 54
Регистрация: 19.03.2013
Сообщений: 3,091
Записей в блоге: 18
Завершенные тесты: 1
02.04.2013, 09:39 #13
Дебаг. Ставишь точку останова и вперед. Быстрее разберешься.
0
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.04.2013, 10:29 #14
Для меня всегда трудно читаемым есть такой сишноподобный код замаскированный под 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
OhMyGodSoLong
02.04.2013, 11:25     Как научиться эффективно читать чужой код С++
  #15

Не по теме:

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 11:25
Привет! Вот еще темы с ответами:

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

Как научиться программированию на С++ - C++
Как научиться программированию на С++, как за месяц более менее освоить этот язык.программирования.

Как научиться программированию на С++ - C++
Как научиться программированию на С++, как за месяц более менее освоить этот язык программирования. В частности научиться создавать вирусы...

Как внедрить dll в чужой процесс - C++
Как внедрить длл в чужой процесс, и отлавливать все его сообщения...... если возможно, то небольшой пример или ссылка рус....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.04.2013, 11:25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru