Bugs

  • 阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序,但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己,还是对后来的人,它们都是相当重要的。
  • 对于代码中存在的特殊的例外处理,在进行改动时一定要注意,以免改出bug, 最好把例外的代码隔离出去
  • laravel的Users::expired()->get()->pluck("user_id")返回的是Illuminate\Support\Collection对象,不可直接in_array,需手动调用toArray()
  • 不要为了省事而写不清晰的让人看不懂的代码,因为不知道什么时候,你自己也看不懂了。重写都没法下手。
  • 具体的错误信息不应该暴露到普通用户
  • ES中对于keyword类型字段的模糊查询的长度要做限制。以免造成集群崩溃 (1次)
  • Array to string conversion 处理数据时要确认数据结构是否是想要的,不要主观判断猜测 (多次)
  • 更新用户的配置之后,如果需要使用用户的最新配置,就不能从用户的session中拿数据了。因为session中肯定是旧的,这点没考虑到。(1次)
  • ES 查询默认是10条结果,一定记得加size,如果需要取出全量数据,要么scroll 要么分页慢慢查 (好多次)
  • isset 对于值为null的变量为 false, strlen对于变量值为null0
  • 不要用 timestamp , 改用 datetime
  • 删除数据时要判断该数据是否是当前用户的数据,防止被跨站攻击利用枚举法依次列举id进行删除 从而导致删除数据库被删库!!!!也就是水平权限控制
  • 忘记清空脏数据,将队列中的数据写文件时,忘记清空队列中的脏数据
  • 字符串拼接没考虑到某个值不存在的情况
  • 判断值是否存在直接用 (这会导致当值为0出现问题) 但用strlen 比较好, 但又要考虑存在这个值是不是数组的情况
  • ES raw 查询 需要在查询体中加上 index (发生了3次)
  • 修改一个bug 导致另一个bug 测试不完整
  • php 直接导出数据到页面的话,如果程序有异常也不会报错。 要注意。 可以先保存文件到本地来排查
  • 严格判断列表中的数据 是不是空 列如这个情况 “[]” 需要decode 后再判断、 可以直接在Redis里decode出来
  • es的 max_result_window = 10000 默认值是10000 凡是有可能分页之类的超过这个数量 就一定要对ES进行配置 (次数:4 )
  • 请求ES或其他接口,时通时不通的情况,有可能是端口用完了, 用 netstat -atunp | grep 9200 查看链接指定服务的连接数
  • 控制器里面要加 try catch 不然异常直接抛到了客户端。 可以考虑框架的所有错误处理(次数: 2)
  • 对于要上线的功能,一定要开分支 。 不然很麻烦,代码都不敢随便提交。(次数: 1)
  • 对于 strlen 的使用 要保证参数不是数组 不然会抛异常 (次数:3)
  • 对于不确定是否存在的字段,直接使用了 $data['field'] 导致程序报错 (次数: 4)
  • 不要主观假设数据来源合法,不要猜测数据来源是你想要的样子。 要进行反问,如果不是我想要的数据,怎么处理 (次数:3)
  • 粗心,复制代码没改到位。
  • 写在repository 里面的代码 要考虑到其他的repository 会不会用到, 是不是要抽出来。直接放到model里或者找一个合适的地方。 (次数:1)
  • 这个ES库超级烂 basemkhirat/elasticsearch千万不要用,直接用elasticsearch-php这个库。
  • 数据库查询 连表查询会造成模糊的字段要 表名.字段名 (次数:2)
  • strpos(haystack, needle) 参数给搞反了。
  • $a=1 $a?:0$a==1?:0 的结果不同一个是1 一个是true