- 关于代码结构:
每个package就是一个subsystem,一个subsystem应该只实现一个功能。
- 关于性能和代码的阅读性:
最简单的,KMP算法用自动状态机解释比用next数组解释要清晰且容易理解。
- 以下是July的KMP求NEXT的解释:
http://blog.csdn.net/v_july_v/article/details/7041827
这一大坨。。我看完也没觉得解释的清楚。
- DFA解释
而用DFA解释的话,我可以把这个问题分解成以下两个步骤:
构造DFA;
用构造DFA的去匹配字符串。
接下来只要理解DFA就能理解整个算法了。
比如A,B,C,A,B,C这个字符串,就是有字母种类*字符串长度中那么多的状态,当遇到结束状态时候就是匹配成功。否则继续匹配。
DFA与一维数组比较就是占用的空间会明显的多。
可是对于编写代码的人来说,DFA是比NEXT更容易自然推导的方式。
- 结论:
所以对于我来说,当容易理解的代码和高性能的代码产生冲突的时候我更倾向于写的清晰且容易理解的代码。
代码简洁之道里面有一句,代码应该写的简单看起来不可能出错,而不是复杂看起来可能不出错。