写算法代码的一些教训

1

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


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


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


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


3

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


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



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



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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值