V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Africa
V2EX  ›  程序员

怎样才算真正看过了源码?

  •  
  •   Africa · 2020-05-15 17:34:30 +08:00 · 5577 次点击
    这是一个创建于 1682 天前的主题,其中的信息可能已经有所发展或是发生改变。
    19 条回复    2020-05-16 17:39:48 +08:00
    AngryMagikarp
        1
    AngryMagikarp  
       2020-05-15 17:35:27 +08:00
    看懂了
    byaiu
        2
    byaiu  
       2020-05-15 20:22:21 +08:00
    可以想清楚加功能的方式。
    opengps
        3
    opengps  
       2020-05-15 20:24:10 +08:00 via Android
    脱离代码之后能画出流程图,就已经看懂代码了
    msg7086
        4
    msg7086  
       2020-05-15 20:27:05 +08:00
    了解原理,可以自己山寨一套类似功能的软件出来。
    wunonglin
        5
    wunonglin  
       2020-05-15 20:32:12 +08:00
    能举一反三
    rekulas
        6
    rekulas  
       2020-05-15 20:37:12 +08:00
    看过源码:大部分逻辑能理解主要在做什么
    看懂源码:能独立开发一个功能类似的简易版库
    看透源码:提交 pr 到核心逻辑修复 bug
    hantsy
        7
    hantsy  
       2020-05-15 20:46:04 +08:00   ❤️ 13
    对大部分人来讲,花时间去看源代码是浪费生命。

    一个好的开源项目要想推广开来,一般会有文档包括 API 文档去教你的怎么使用,怎么理解它的运行原理,没有哪个开源项目的初中是为了让你的读他的源代码。

    好的开源项目,看懂核心源代码很容易,如果你仅仅是为了看这个目的,然后面试时去吹 NB,那么这个事本身就没有意义。10 几年前我也看过 Hibernate2,Spring2 的部分代码,现在几乎不会特意为了去看代码而看代码,感觉没什么太大意义。除了为了解决上游源代码的缺陷,自己要深入的时候才去仔细看,比如,当时在写这个例子,仅仅是看相关的代码几个文件 https://github.com/hantsy/spring-reactive-sample/blob/master/war/src/main/java/com/example/demo/AppInitializer.java
    nianyu
        8
    nianyu  
       2020-05-15 23:32:44 +08:00   ❤️ 1
    楼上老哥说得对,别去干浪费时间的事了
    h123123h
        9
    h123123h  
       2020-05-15 23:34:08 +08:00 via iPhone   ❤️ 4
    我也不想看,但面试都要问这个,看过啥啥啥源码吗?
    namelosw
        10
    namelosw  
       2020-05-15 23:40:48 +08:00
    我每次都很好奇,V2 那些 Java 面试失败的,楼下总有问 JVM 源码看了没?

    感觉就像算法不过总有人问 CLRS 看完了没一样。实际上 Google 看完 CLRS 的都没几个人。

    建议有别的方式都不直接看源码,教程,分析,设计文档之类的比较好,自上到下的讲解之类的。
    yukiloh
        11
    yukiloh  
       2020-05-15 23:42:27 +08:00
    同意#7
    大部分考试也是没有意义的,但我们的世界没有分院帽,而且人会骗人,所以只能提高门槛
    hhyvs111
        12
    hhyvs111  
       2020-05-16 00:24:35 +08:00 via iPhone   ❤️ 1
    带着工作中遇到的问题去看才是最有用的,不然看了也是白看
    azcvcza
        13
    azcvcza  
       2020-05-16 10:10:55 +08:00
    1.理解思想
    2.自己实现
    3.跟进社区
    24bit
        14
    24bit  
       2020-05-16 11:11:59 +08:00
    不参与开发的话,源码看了以后要不了多久也会忘,学习的话关键还是理解作者的思路吧?怎样实现?为什么这样实现?解决了什么问题?

    就是面试的时候有些人总喜欢问到某个类某个方法,我又没参与开发,源码又是好久以前看的了,能记住思路就不错了,那还记得住类、方法……
    fuermosi777
        15
    fuermosi777  
       2020-05-16 12:10:19 +08:00
    为什么要看源码?
    xoyimi
        16
    xoyimi  
       2020-05-16 13:26:08 +08:00
    人家问你怎么吃饭才能吃饱,你告诉人家吃饭不能吃太饱。
    cabing
        17
    cabing  
       2020-05-16 13:44:31 +08:00   ❤️ 1
    @rekulas 这个大哥说的很明白了。

    我抛转引用玉。主要是解决了啥问题,遇到了这个问题你是怎么解决,怎么设计的,设计的难点是啥?

    以后遇到类似的问题你是否也能这么设计,或者用到代码里面的设计?

    如果工作中经常用到的开源软件比如 redis 或者 kafka 之类的,读完源码,真的有豁然开朗的感觉,原来他出这个问题,或者有这个限制原来是这个原因哦。

    深入了解工作中用到的主要软件的原理,对工作不一定会用到,但是真的很有趣。
    GrayXu
        18
    GrayXu  
       2020-05-16 17:39:31 +08:00
    看源码主要是理解设计思路吧,就是不希望过于依赖文档,而文档不可能面面俱到。
    赞成前面说的流程图论。
    GrayXu
        19
    GrayXu  
       2020-05-16 17:39:48 +08:00
    @GrayXu ofc, curd boy 就算了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1041 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:15 · PVG 07:15 · LAX 15:15 · JFK 18:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.