1展示函数调用链. 使用尾调用同级的树形图,即每行一个函数或一个重要循环,不重要可省略,并且一个函数的子函数中的最后一个与父函数必须处于同一缩进,其他缩进 + 1 e.g.2f()3├── f 的第一个子函数4│ 如果 f 只有一个要展示的子函数就这样画5├── ...6f 的最后一个子函数 g()7├── g 的第一个子函数8g 的最后一个子函数1std.debug.print()2├── std.debug.lockStderr()3│ ├── Io.lockStderr()4│ │ ├── Threaded.lockStderr()5│ │ Threaded.initLockedStderr()6│ Io.LockedStderr.clear()7├── Io.Writer.print()8│ ├── Io.Writer.writeAll()9│ │ Io.Writer.write()10│ Io.Writer.printValue()11│ Io.Writer.writeAll()12std.debug.unlockStderr()13├── Io.unlockStderr()14Threaded.unlockStderr()15├── Io.Writer.flush()10 collapsed lines
16│ Writer.defaultFlush()17│ File.Writer.drain()18│ File.Writer.drainStreaming()19│ File.writeStreaming()20│ Io.operate()21│ Threaded.operate()22│ Threaded.fileWriteStreaming()23│ posix.system.writev() # 这里调用 macos 平台函数24│ while (...) {...}25mutexUnlock()普通树形调用:
1树形调用图,即每行一个函数或一个重要循环,不重要可省略. 多行小步骤可合并为中文简述. 每行简述功能.2标明步骤所在文件的相对路径。如果和父函数同属一个文件,省略。进入新文件则标注文件名. 跨进程(如通过 websocket)也需要说明跨进程. e.g.3f() | 📂 1.py (简述功能)4├── f1() (简述功能)5├── Type.method()6│ ├── while(...)7│ │ └── self.g() | 📂 2.py8│ └── ...9│ └── ...10└── ...1std.debug.print()2├── std.debug.lockStderr()3│ ├── Io.lockStderr()4│ │ ├── Threaded.lockStderr()5│ │ └── Threaded.initLockedStderr()6│ └── Io.LockedStderr.clear()7├── Io.Writer.print()8│ ├── Io.Writer.writeAll()9│ │ └── Io.Writer.write()10│ └── Io.Writer.printValue()11│ └── Io.Writer.writeAll()12└── std.debug.unlockStderr()13 ├── Io.unlockStderr()14 └── Threaded.unlockStderr()15 ├── Io.Writer.flush()9 collapsed lines
16 │ └── Writer.defaultFlush()17 │ └── File.Writer.drain()18 │ └── File.Writer.drainStreaming()19 │ └── File.writeStreaming()20 │ └── Io.operate()21 │ └── Threaded.operate()22 │ └── Threaded.fileWriteStreaming()23 │ └── posix.system.writev() # 这里调用 macos 平台函数24 └── mutexUnlock()