Как перепроектировать программу, которая не имеет никакой [закрытой] документации

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

7
задан Sathyajith Bhat 19 June 2012 в 16:25
поделиться

7 ответов

Майкл Фезерс « Эффективная работа с унаследованным кодом » - отличная отправная точка для таких усилий - не особенно зависимых от языка (его примеры есть в нескольких языки, отличные от Python, но методы и образ мышления ДЕЙСТВИТЕЛЬНО распространяются на Python и почти на любой другой язык).

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

Feathers предлагает эвристические методы и методы, на которых следует сосредоточиться. ваши усилия и как начать работу, когда код в полном беспорядке (отсюда «устаревший») - без документации, или вводящие в заблуждение документы (описывающие что-то совершенно отличное, может быть, тонким образом, от того, что на самом деле ДЕЙСТВУЕТ код), никаких тестов, непроверяемый без рефакторинга клубок спагетти-зависимостей. Это может показаться крайним случаем, но любой, кто проработал долгую карьеру в программировании, знает, что на самом деле это встречается чаще, чем кому-либо хотелось бы; -).

10
ответ дан 6 December 2019 в 06:50
поделиться

Я бы рекомендовал создать некоторую документацию с помощью epydoc http://epydoc.sourceforge.net/ . Конечно, если нет строки документации, результат будет плохим, но он даст вам хотя бы одно представление о вашем приложении, и вы сможете более легко ориентироваться в классах.

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

Надеюсь, это поможет

5
ответ дан 6 December 2019 в 06:50
поделиться
  • В прошлом я использовал 'Граф вызовов Python' , чтобы понять структуру исходного кода.
  • Используйте отладчик, например, pdb для пробуждения через код.
  • Попытайтесь прочитать код еще раз через день break, это также помогает
5
ответ дан 6 December 2019 в 06:50
поделиться

Мне приходилось много этого делать на работе. То, что работает для меня, может отличаться от того, что работает для вас, но я поделюсь своим опытом.

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

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

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

Удачи!

2
ответ дан 6 December 2019 в 06:50
поделиться

Enterprise Architect от Sparx Systems очень хорошо обрабатывает исходный каталог и генерирует диаграммы классов. Это не бесплатно, но по очень разумной цене за то, что вы получаете. (Я никак не связан с этой компанией, я уже несколько лет доволен их продуктом.)

0
ответ дан 6 December 2019 в 06:50
поделиться

Я бы начал с хорошей IDE на Python. См. Ответы на этот вопрос .

0
ответ дан 6 December 2019 в 06:50
поделиться

Вам повезло, что он написан на Python, который легко читать. Но, конечно, можно написать сложный для понимания код и на Python.

Шаги следующие:

  1. Запустить программное обеспечение и научиться его использовать, и хотя бы немного понять его возможности.
  2. Прочтите тесты, если таковые имеются.
  3. Прочтите код.
  4. Когда вы столкнетесь с кодом, который вы не понимаете, сделайте отладочную паузу и пройдитесь по коду, глядя, что он делает.
  5. Если тестов нет или тестовое покрытие низкое, напишите тесты, чтобы увеличить тестовое покрытие. Это хороший способ изучить систему.
  6. Повторяйте, пока не почувствуете, что плохо владеете кодом. Расплывчатая хватка - это все, что вам нужно, если вы собираетесь управлять кодом. Вы получите хороший контроль, как только начнете работать с кодом. Для большой системы, на которую могут уйти годы, так что не пытайтесь сначала все понять.

Существуют инструменты, которые могут вам помочь. Как сказал Стивен С., IDE - хорошая идея. Я объясню почему:

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

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

Вот и все. Удачи.

Как сказал Стивен С., IDE - хорошая идея. Я объясню почему:

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

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

Вот и все. Удачи.

Как говорит Стивен С., IDE - хорошая идея. Я объясню почему:

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

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

Вот и все. Удачи.

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

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

Вот и все. Удачи.

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

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

Вот и все. Удачи.

3
ответ дан 6 December 2019 в 06:50
поделиться
Другие вопросы по тегам:

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