Понимание большого, недокументированного набора исходного кода? [закрытый]

Когда я запускаю приведенный ниже код, я не получаю ошибок и получаю возвращаемое значение «100».

Вы уверены, что не сделали опечаток, непреднамеренного отступа и правильно вызвали метод с целым числом в качестве параметра?

17
задан Jonathan Leffler 17 July 2015 в 05:49
поделиться

11 ответов

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

  1. Фигура, как скомпилировать, устанавливает и выполняет Вашу собственную версию Вина от существующего исходного кода.

  2. Изучите, как отладка (например, используют gdb) на рабочем экземпляре Вашей версии Вина.

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

  4. Забавная часть: найдите, куда путь выполнения кода идет, и начните изучать, как все это сочетается.

Да, чтение партий и большого количества кода поможет, но компилятор/отладчик/компьютер может выполнить код намного быстрее, чем Вы.

19
ответ дан 30 November 2019 в 10:18
поделиться

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

Однако необходимо начать подниматься на себя для реального понимания, на что похоже представление от вершины.

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

Но никогда не бойтесь восхождения запуска. Представление всегда стоит любых усилий.


Это всегда было хорошей аналогией для меня. Я знаю, что этот вопрос был больше об определенных подсказках относительно того, как эффективно иметь дело с кодовыми базами, после того как Вы начали подниматься. Но тем не менее это немедленно напомнило мне о наших занятиях по физике очень давно.

10
ответ дан 30 November 2019 в 10:18
поделиться

(Это - ответ, который я отправил на вопрос некоторое время назад. Я изменил его немного для установки этому вопросу.)

Опыт показал мне, что существует 3 главных цели, которые Вы имеете при изучении унаследованной системы:

  1. Изучите то, что код, как предполагается, делает.
  2. Изучите, как это делает их.
  3. (кардинально) Изучите, почему это делает их способ, которым это делает.

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

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

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

Выполните тестовые сценарии, если это возможно.

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

При действительно окончательном переходе к чтению кода запустите в логическом "основном" месте и пойдите оттуда. Только прочитайте код, от начала до конца, или в алфавитном порядке, или что-либо (это, вероятно, очевидно).

8
ответ дан 30 November 2019 в 10:18
поделиться

Закопать. Думайте о вопросе, на который Вы хотели бы ответить и попытались бы найти ответ. Когда Вы устаете от чтения кода, пойдите, читает dev список рассылки, Руководство разработчика или Wiki.

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

4
ответ дан 30 November 2019 в 10:18
поделиться

Лучший способ знакомиться с большой кодовой базой состоит в том, чтобы погрузиться в. Много проектов имеют список легких задач, которые должны быть сделаны, и они обычно резервируются, чтобы помочь осторожно ввести людей. Необходимо найти и работать над некоторыми из них; Вы будете узнавать много об общей схеме кода и структуре, способствовать проекту и получать легкую выплату, которая поможет поощрить Вас брать большие задачи.

Как большинство проектов, ВИНО имеет хорошие ресурсы в наличии для своих разработчиков; IRC, Wiki, список рассылки и руководства/обзоры. С большинством пугающих кодовых баз это не настолько страшно после первых нескольких мер. ВИНО является действительно большим, и во многом как ядро, я сомневаюсь, что во всех системах существует любой эксперт; не чувствуйте, что необходимо быть также. Начните работать над чем-то, что имеет значение для Вас, и возьмите его оттуда.

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

Все мы ценим Вашу доблесть и готовность помочь с ВИНОМ (этому нужен он). Спасибо и удача.

6
ответ дан 30 November 2019 в 10:18
поделиться

Ищите одну специфическую функцию, которую Вам интересно улучшать. Ищите его реализацию. После того как Вы нашли его, наденьте ту солому и все, за чем остальные будут следовать.

4
ответ дан 30 November 2019 в 10:18
поделиться

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

2
ответ дан 30 November 2019 в 10:18
поделиться

Попытайтесь реализовать некоторое крошечное небольшое изменение в коде, что-то, что будет видимо Вам. Это могло бы выяснять осуществимый способ произвести отладочные операторы (и выяснять, где вывод появляется), он мог бы изменять размер по умолчанию окон или настольного цвета или чего-то. После того как можно заставить что-то произойти в кодовой базе, Вы поцарапали поверхность понимания и можете начать идти дальше к более сложным вещам. В той точке выберите цель чего-то немного более полезного, которое Вы хотели бы, чтобы код сделал и реализовал это. Или проверьте средство отслеживания ошибки проекта и ищите что-то маленькое для запуска с.

Документ, когда Вы идете, и модульные тесты записи, как Вы идете, и осуществляют рефакторинг, когда Вы идете. Когда Вы выясняете то, что стандартная программа делает, комментирует это!!

2
ответ дан 30 November 2019 в 10:18
поделиться

Как другие предположили, закопайте! Прочитайте всю доступную документацию, которую можно поглотить. Затем посмотрите, можно ли найти других людей, которые интересно или хорошо осведомлены и учатся с/от ими. Это помогает иметь людей, чтобы возвратить идеи прочь и задать вопросы.

Для исходного кода C, после того как Вы получаете ощущение того, какие области кода требуется продолжить работать, генерируйте ctags и cscope базы данных для того кода. Эти инструменты делают намного легче перейти вокруг и понять код. Много текстовых редакторов (одним примером является gvim) имеют поддержку ctags и cscope, таким образом, можно перейти вокруг легко.

2
ответ дан 30 November 2019 в 10:18
поделиться

(предупреждение: бесстыдный маркетинг впереди)

Для разработчиков Java, использующих Eclipse, существует nWire , Это плагин Eclipse для навигации и визуализации больших кодовых баз.

2
ответ дан 30 November 2019 в 10:18
поделиться

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

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

1
ответ дан 30 November 2019 в 10:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: