my-idea
前言
本文记录一些思想、问题及解决方法,或生活或工作中的,节省时间提高工作效率
遇到问题
问题定位
- 使用正确方法锁定一个尽可能小的区间(如printf如没有遇到\n就不会刷新缓冲区输出,所以须加上\n或flush)
- 看逻辑是否出现问题
- 没有逻辑问题可能是其中某些东西隐含着未知的特性
问题搜索
- 先用谷歌,bing,等进行搜索
- 同上,只不过换个说法,或者方面,或将于问题相关的子问题衍生问题及知识点等全搜一遍
- 去官网找解决方法,读官方文档,不要盲目用搜索引擎乱搜浪费时间
- 去overstackflow等论坛提问
排错攻略
习惯
- 不要去删除代码,不要的代码直接给予注释并予以标记提示版本信息,然后再去修改。推荐多学学git
基础逻辑
- 查看代码变量是否写错,input与intput
- 考虑边界条件
- 变量意义是否搞混导致用错,为了避免这一问题的出现,建议少用i,j等表意不清的变量名。
- 判断条件可能错误,r如<与<=还有判断条件函数的逻辑
- 数据类型出现问题,char和string,此外可能计算数字会超过int须使用long
隐藏性质错误
- 是否同时写时读,localtime其本质是修改这个固定位置的全局变量,并返回指针,其函数不可重入(就是不可并行),而如果多次使用其,可能会出现当sprintf等需要从此指针读取时(sprintf可能之后才会读取),如果此时其它地方调用localtime,就会既读有写,产生段错误
写代码的注意事项
coding思想
- 将整个需要实现的逻辑先画下来,排除思想上的逻辑错误并方便判断是否可行,磨刀不误砍材工。
- 极度精简化,划分模块、函数、功能等,尽量划分足够细致,能分成两个书写绝不写成一个,判断方法是,每个小点实现起来足够简单,以至于不会出错,此外变量命名应该足够清晰,代码就是最好的注释。如果出现错误,模块大会使得查错时间会是编写代码的好多倍。如fpga计量min与sec,大可不将其写为一体,而是将其分为两个模块,分别计量,sec满60发送一个激励信号给min的计量模块的使能端,min模块开始+1
- 写一个小模块就测试一下,看看是否符合预期,不要整个写完在run。此外,注意临界条件
- kiss:Keep It Simple and Stupid
- 大项目的话要提高函数复用率,要使得逻辑规整
- 建议每个函数不超过60行
coding时可能出错的注意事项
- 遇到需要写判断条件时一定要注意是否书写正确
- 注意是否打字错误,如input写为intput,或者l(L)与I(i)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 焚琴煮鹤のBlog!
评论