File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -60,6 +60,7 @@ Debug 调试技巧
6060~~~~~~~~~~~~~~~~~~~~~~
6161
6262- 拼写错误。不要笑,这个错误其实很常见,推荐打开编辑器的拼写检查,可以消除一些类似问题。
63+ - 类型错误。在动态语言和弱类型语言当中比较常见的一种错误(动态语言确实更容易出 bug),可以借助类型强转,type hint 工具。
6364- 资源没有关闭。打开的文件等资源一定要关闭,防止资源泄露。go 的 defer 和 python 的 with 最好用上
6465- 连接池使用不当打满连接数。连接池应该是全局共享的(单例),而不是每个请求都要去创建连接池。连接池应该是一个应用共享的
6566- 深浅拷贝问题。不同语言可能又不同的拷贝模型,确定你的参数是深拷贝还是浅拷贝,能否修改,修改了之后是否有副作用。
@@ -68,8 +69,8 @@ Debug 调试技巧
6869- 数组越界错误。注意涉及到数组的时候使用的下标是否会越界。
6970- 数据库查询参数错误。查询数据库的时候可能因为一些不合法参数导致数据库慢查询,可以在入口处做一下限制。比如限制limit 大小
7071- 路径错误。编写一些脚本需要处理文件的时候,使用绝对路径比较不容易出错。
71- - 空值错误。比如直接赋值一个 go 里边的 map 会 panic,你需要先给 map make 一个值,很多 go 新手会重复犯这个错
72- - 闭包问题。循环里闭包引用的是最后一个循环变量的值,需要注意一下,很多语言都有类似问题
72+ - 空值错误。比如直接赋值一个 go 里边的 map 会 panic,你需要先给 map make 一个值,很多 go 新手会重复犯这个错(go slice 却可以直接声明之后 append)
73+ - 闭包问题。循环里闭包引用的是最后一个循环变量的值,需要注意一下,很多语言都有类似问题,可以通过临时变量或者传参的方式避免
7374- 遍历修改列表问题。一边遍历,一边修改可能会使得迭代器失效而出错,最好不要遍历的时候修改列表。
7475- 遍历修改元素值问题。这一点 go 和 python 表现不同,go 比如你去循环一个 []Struct 是无法修改每个元素的,go 会拷贝每一个元素值,需要通过下标或者指针修改
7576
You can’t perform that action at this time.
0 commit comments