前言

本文记录一些思想、问题及解决方法,或生活或工作中的,节省时间提高工作效率

遇到问题

问题定位

  1. 使用正确方法锁定一个尽可能小的区间(如printf如没有遇到\n就不会刷新缓冲区输出,所以须加上\n或flush)
  2. 看逻辑是否出现问题
  3. 没有逻辑问题可能是其中某些东西隐含着未知的特性

问题搜索

  1. 先用谷歌,bing,等进行搜索
  2. 同上,只不过换个说法,或者方面,或将于问题相关的子问题衍生问题及知识点等全搜一遍
  3. 去官网找解决方法,读官方文档,不要盲目用搜索引擎乱搜浪费时间
  4. 去overstackflow等论坛提问

排错攻略

习惯

  1. 不要去删除代码,不要的代码直接给予注释并予以标记提示版本信息,然后再去修改。推荐多学学git

基础逻辑

  1. 查看代码变量是否写错,input与intput
  2. 考虑边界条件
  3. 变量意义是否搞混导致用错,为了避免这一问题的出现,建议少用i,j等表意不清的变量名。
  4. 判断条件可能错误,r如<与<=还有判断条件函数的逻辑
  5. 数据类型出现问题,char和string,此外可能计算数字会超过int须使用long

隐藏性质错误

  1. 是否同时写时读,localtime其本质是修改这个固定位置的全局变量,并返回指针,其函数不可重入(就是不可并行),而如果多次使用其,可能会出现当sprintf等需要从此指针读取时(sprintf可能之后才会读取),如果此时其它地方调用localtime,就会既读有写,产生段错误

写代码的注意事项

coding思想

  1. 将整个需要实现的逻辑先画下来,排除思想上的逻辑错误并方便判断是否可行,磨刀不误砍材工。
  2. 极度精简化,划分模块、函数、功能等,尽量划分足够细致,能分成两个书写绝不写成一个,判断方法是,每个小点实现起来足够简单,以至于不会出错,此外变量命名应该足够清晰,代码就是最好的注释。如果出现错误,模块大会使得查错时间会是编写代码的好多倍。如fpga计量min与sec,大可不将其写为一体,而是将其分为两个模块,分别计量,sec满60发送一个激励信号给min的计量模块的使能端,min模块开始+1
  3. 写一个小模块就测试一下,看看是否符合预期,不要整个写完在run。此外,注意临界条件
  4. kiss:Keep It Simple and Stupid
  5. 大项目的话要提高函数复用率,要使得逻辑规整
  6. 建议每个函数不超过60行

coding时可能出错的注意事项

  1. 遇到需要写判断条件时一定要注意是否书写正确
  2. 注意是否打字错误,如input写为intput,或者l(L)与I(i)