onlyliuxin / coding2017

218 stars 643 forks source link

通过看源码,大家学到了什么? #557

Open Locker1995 opened 7 years ago

Locker1995 commented 7 years ago

最近被学长问起一个问题, “有没有看过框架源码例如Spring,Mybatis等框架的源码。” 也相信大家通过各种方法,例如debug追踪等手段,去看源码的流程等。 “那么通过看源码你学到了什么?” “额。。”(我回答,的确看过,但是真要说学到什么,我还真说不出什么。。。。) “那么有没有发现源码和你现在做的项目中,有没有什么共通之处。” “额。。”(没做过对比真的不知道。。。)

所以,现在真的是一问三不知,的确需要反省、思考下-- “通过看源码,究竟学到了什么?” “源码和我们项目的开发,有没什么共通之处?”

所以这个问题我觉得,大家也可以分享分享自己的看法或者心得。

msftgitsklsd commented 7 years ago

还没看😢

BlindingDark commented 7 years ago

我也没有大段的看过某个著名开源项目的源码。 因为如果只是使用框架就需要看源码,证明这个框架的设计是有问题的。 所以好的框架让你用起来特别舒服,根本用不到去看它的源码。

什么时候我会去看源码

  1. 当我想做某个功能,发现某些开源框架已经实现了这个功能,但是并不想整个拿来用,需要二次开发或者只要其中的某个部分。
  2. 当我想学习某一类知识点,正好有相应的业界公认的优秀开源实现。
  3. 觉得自己写的业务逻辑可能不够严谨,正好有相似的开源框架,把它的逻辑复制粘贴过来。
  4. 纯粹因为某项目特别出名。想看。

前三条都是遇到问题,解决问题,我认为这种学习方式比较适合快速学习。见效快。 第四条则是需要大片时间的系统学习。见效慢,普通人难以坚持。

看优秀源码的时候我会注意什么

这些都是看情况需要注意的东西。只不过多数情况下我只会看看前两条,毕竟还是实用党,先把功能搞出来再说。 越是高级的程序员就越会思考更高层次的东西。我只是停留在够用的级别。

BlindingDark commented 7 years ago

顺便说一下,怎样学习开源代码。 不是看就行了,要改。 先把源码拉下来,跑通测试。然后改某些功能,看看能不能符合自己的预期。再跑测试。 当然其实这个过程是很难的。我也没有做过大型开源项目的二次开发。

onlyliuxin commented 7 years ago

我刚学习了设计模式之后,根本就不知道怎么用, 后来看来Jive和Junit ,才感慨道: 我赛,原来如此!

Wrecksoul commented 7 years ago

我觉得看源码就是要看它的设计模式,《Think in java》这本书为什么这么受追捧,原因之一正是因为它穿插其中的设计模式说明。我们在写大型程序的时候非常重要的除了分析需求之外就是程序的架构设计,看源码可以让我们站在巨人的肩膀上。