在我目前的博客中,数量最多的就是leecode问题的解答。这些归在leetcode标签之下的文章,其中的绝大部分,基本就是简单一说思路,然后贴代码。
比如这种
它们的共同特征就是结构较简单,讲解也不多,贴的代码行数能占整个篇幅的七八成。这种文章写起来很快,leecode标签下最多时候有45篇。
虽然这样一来,博客的文章数上升很快,但不客气地说,这种有“注水”嫌疑的发文,已经背离了我维护这个博客的初衷。我曾经将博客地址自荐给同学,结果几分钟后他就回复了,说我这个博客简直就是为某公司面试作准备的啊。当时真是囧翻了。
另外一方面,从反响来看,阅读次数最多的文章,是两篇关于网页前端持续集成的。这说明相比于有些枯燥的单纯算法题,大家更愿意阅读实际个工作中可能遇到的工具,框架库等,当然如果有可运行的demo包就更好了。
----------------------------------------------------------------------------------
所以,我决定从现在开始,对这个博客作如下改变:
1. 删掉leecode下所有“注水”的文章,仅仅保留一些我个人觉得算法比较有趣,值得较多讲解的文章。
2. 以后我会多发一些有质量的文章,而不会在意文章数目的多寡。
注:
有关oj.leecode.com,我在2013年开始注意到leetcode这个网站,之后断断续续利用oj.leecode作算法题练习。
- 2014年9月底之前,我已经把网站上algorithm下的所有题目都做完了,实现语言上,cpp实现了2/3,java实现了1/2,其中有不少是cpp和java都有实现,另外还有几道python的实现。
- 2015年2月以来,我又给这些实现代码做了大规模重构,并加上了单元测试。我觉得,重构代码和写单元测试的过程,其实是对代码加深理解的过程。这对于编程能力的提高,甚至有更大的价值。、
- 2015年年初开始,oj.leetcode在沉寂了一年多以后,又开始发布新的算法题了。这部分新题我做的还不多,有时间会继续做完,当然都会配备单元测试。
所有代码实现以及单元测试可在我的github找到,主要目录结构如下:
leecode/src 题目解法的cpp实现
/cpp_unittest 相应题目cpp解法的单元测试,基于googletest,用make编译
/java 题目解法的java实现
/java_unittest 相应题目java解法的单元测试,基于junit, 用EMMA做了代码覆盖率检测,并用Ant集成
/py 题目解法的python实现,用unittest 模块写了main函数,直接运行等于启动单元测试
我相信,这些经过重构优化并且带有足够强大单元测试的代码,才算时有质量的代码,才值得呈现给大家。