liuyangc3 / note-book

some notes
Creative Commons Attribution Share Alike 4.0 International
7 stars 1 forks source link

算法 数据结构 #2

Open liuyangc3 opened 3 years ago

liuyangc3 commented 3 years ago

https://www.v2ex.com/t/732607#reply73

算法是你想出来解决某些问题的一个解.

数据结构是算法用得比较多之后内化出来的一个模型. 重视数据结构的代码比不重视数据结构的代码清晰易懂好维护, 不过数据结构一般不会让你做出之前不能做到的事情. 你可以把数据结构看作某些算法的沉淀.

Linus, Rob Pike 很多人都说过类似的问题, 这里引用一个 Eric Raymond: http://www.catb.org/esr/writings/taoup/html/ch01s06.html#id2878263 大意是人很难理解简单的过程逻辑, 但是却能理解很复杂的数据结构.

对比一下一个 50 行的 if else for 循环, 和一个 50 行的 class.

或者一个不太恰当的比喻: 只注重算法≈把逻辑全扔到 controller 里: 随着 use case 的增多代码会很难读且有很重复. 重视数据结构≈把逻辑逐渐沉淀到 model 层, 然后想要理解代码的人着重看一看 model 就很快能理解, 而维护代码的人经常能直接用上 model 里已有的很多东西.