前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写算法代码的一些教训

写算法代码的一些教训

作者头像
double
发布2019-07-10 18:10:34
3830
发布2019-07-10 18:10:34
举报
文章被收录于专栏:算法channel算法channel

1

如11点多朋友圈内留言,简单总结了下近两周写的代码及今天调试的心得。尽管写过一些代码,也有一些经验,但是感觉自己写代码还是小学生,该走的坑一点也没少。

最近在一个相对一般的算法框架上,添加了好几个约束,表面看起来,还比较容易做到,于是利用两周不到时间,一口气写完,结果今天在调试时,发现了至少两处教训,记录于此,顺便为接下里可能入坑的小伙伴一些启发。

2

基本开明白算法框架后,再动手去写,这是一条铁律。写过大型软件框架,同时也精通某领域算法的大牛,我知道几个,他们都是这么告诉我的,在没有充分消化算法原理前提下,请想办法弄明白,无论你采取什么样的方法,哪怕是请会的同事吃饭,然后叫他们告诉你算法的详细实现原理。

没有理解算法实现细节,就开始动手改算法,添加功能,优化算法细节,后果可能比我们预想的麻烦很多。算法框架往往涉及到一整套完整的求解模型,包括求解的初始状态,状态更新,也就是我们通常说的迭代过程,中间的每个模块都是一个完整的整体。如果没有搞懂模块间的关系,就擅自改动某个模块的某个函数的实现细节,很可能会导致整个算法模型的失败,这种错误可能包括得到不可行解,越界等各种各样意向不到,令人抓狂的代码,尤其是在交付期前,出现类似问题,更是要命。

3

在明白算法原理后,增加或优化几处后,需要立即做好全方位的单元测试和边界检查。是的,要立即执行,此时因为是刚修改的,对算法的实现公式,整个算法的实现逻辑都比较清楚,一旦出现错误,比较容易改正过来。

如果,迟几天,可能就要重新返工,甚至需要话费好几倍的时间,来修复这个Bug,这有点得不偿失。

4

算法实现如果涉及到动态规划,需要仔细研究,找到状态更新方程,找出边界状态。写的好的算法一般不是那么直观,往往涉及到正反两向思维,所以需要反复想,多琢磨,才能真正吃透,掌握。

以上,一些个人总结。总之,要想真正理解掌握好算法,还得勤于动手,发现错误并更正,反复迭代。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档