学习设计模式有利于读懂开源项目的代码吗?


最近在阅读一些优秀的开源项目源码的时候,遇到了一个问题。

对于某一行代码,我知道它是用来做什么的,但是就是不明白作者为什么要这么写。

我想了一下,觉得可能是自己对于程序设计这一块不熟悉。所以打算从设计模式入手。我的问题是,设计模式能否满足我的需要?还是说我现在这种水平注定是读不懂的,等基础知识足够扎实以后会无师自通?

注: 读的是Android开源项目

Android java 设计模式

q2a5a5 10 years, 5 months ago

设计模式不是银弹,不是九阴真经,最好不要抱着“学好了设计模式自己的编程水平就能够提高一大截”这个想法。
个人感觉设计模式这个东西在你没有写过大量代码(不是堆砌代码、是别写边想)的情况下,是很难读到心里去的,如果你有一些代码经验,这时你去看设计模式,会有一种“我擦!就是这样!”的感觉。
设计模式本质上就是在大量的软件实践中总结出的解决某些问题的某些解决模式,它不是入门法诀,而是当你陷入代码泥潭时的一根稻草(救命稻草中的一根)。
以上仅为个人见解~

至于学习开源项目,楼上大哥已经讲得比较清楚了,就不多说了,一句话:从结构入手,选模块阅读。

好的 开源项目可以让你从中看到编程的艺术(略装逼,但真的是这种感觉)

tkfkid answered 10 years, 5 months ago

我想了一下,觉得可能是自己对于程序设计这一块不熟悉。

是的,你觉得没错。

所以打算从设计模式入手。

这是一个好主意。不过你不要期望能够“毕其功于一役”,这很难。要真正学懂设计模式并能灵活的运用/套用在现实中,需要很多次/长期的反复学习与练习。你的基础和天赋会有助于减少这些消耗,但有的东西仅仅是靠看书真的无法变成知识。

对于你的问题,答案是肯定的。虽然你现在的“不明白”不一定全是因为你不懂程序设计,但软件设计的知识总是能够帮助到你,多多少少。

注意一点,设计模式并非软件设计的全部,只是其中的很重要的一部分。在我们编程生涯的很长一段时间里,我们都会经历想你说的那种“这种水平注定是读不懂的”的阶段,但是这不应当成为阻拦你继续阅读源代码的理由。

所谓“无师自通”是不太现实的,学习编程这件事情本身就没有定规,它是一种综合素质的体现。你不能指望自己一头扎进“设计模式”的大坑,等爬出来之后“阅读开源项目”就水到渠成了;反过来也是一样。它们应该是相互促进的关系,有点类似于“理论与实践相结合”。

阅读源代码的时候,重点不在于“我是否完全懂了”,而在于“我都读懂了哪些?还有哪些不懂?”懂了的,实际动手的时候尝试用进去,不懂的,学习软件设计的相关知识去搞懂它。并且有鉴于此,阅读源码也不一定非要选择大型项目,有的时候哪怕十几行的片段都能让人受益匪浅——不过当然,谈及到“设计”的层面,当然要上到一定的规模才能有所体现。

千坂绫灰音 answered 10 years, 5 months ago

Your Answer