Я думаю, что вы ищете здесь диаграмму последовательности . Они позволяют визуализировать порядок, в котором различные модули вызывают друг друга с помощью стрелок.
Построить одно просто:
- Нарисуйте свой начальный класс с пунктирной линией под ним.
- Нарисуйте следующий класс / метод в трассировке вызова с пунктирной линией ниже
- Соедините линии стрелкой, расположенной вертикально под последней стрелкой, которую вы нарисовали.
- Повторите шаги 2-3 для всех вызовов в вашей трассировке
пример
Предположим, у нас есть следующий код, для которого мы хотим создать диаграмму последовательности:
def long_division(quotient, divisor):
solution = ""
remainder = quotient
working = ""
while len(remainder) > 0:
working += remainder[0]
remainder = remainder[1:]
multiplier = find_largest_fit(working, divisor)
solution += multiplier
working = calculate_remainder(working, multiplier, divisor)
print solution
def calculate_remainder(working, multiplier, divisor):
cur_len = len(working)
int_rem = int(working) - (int(multiplier) * int (divisor))
return "%*d" % (cur_len, int_rem)
def find_largest_fit(quotient, divisor):
if int(divisor) == 0:
return "0"
i = 0
while i <= 10:
if (int(divisor) * i) > int(quotient):
return str(i - 1)
else:
i += 1
if __name__ == "__main__":
long_division("645", "5")
Первое, что мы нарисуем, это точка входа ( main
), соединяющая метод long_division
. Обратите внимание, что в long_division создается поле, обозначающее область вызова метода. В этом простом примере прямоугольник будет иметь всю высоту нашей диаграммы последовательности из-за того, что это единственный прогон.
Теперь мы позвоним, find_largest_fit
чтобы найти наибольшее число, которое соответствует нашему рабочему номеру, и вернем его нам. Мы рисуем линию от long_division
к find_largest_fit
с другим полем, чтобы указать область для вызова функции. Обратите внимание, как окно заканчивается, когда возвращается множитель; это конец этой функции!
Повторите несколько раз для большего числа, и ваш график должен выглядеть примерно так:
Заметки
Вы можете выбрать, хотите ли вы маркировать вызовы переданными именами переменных или их значениями, если вы хотите документировать только один конкретный случай. Вы также можете показать рекурсию с помощью вызывающей функции.
Кроме того, вы можете показывать здесь пользователей, предлагать им и достаточно легко показывать их ввод в систему. Это довольно гибкая система, которую, я думаю, вы найдете довольно полезной!